图示ireport中使用javabean作数据源开发基于jasperreports报表过程

时间:2008-09-01 07:21:20  类别:数据  作者:forxinly

图示ireport中使用javabean 作数据源开发 基于 jasperreports 报表 过程
——学习笔记系列之ireport起步
xmlin
本文不讲原理,因为网上的资源很多,本文以一个简单的日销售报表为例,记录在ireport中使用javabean作数据源开发基于jasperreports报表过程.
 
一. 准备工作
 1.正确安装jdk
 2.到http://ireport.sourceforge.net/ 去下载ireport,本文使用1.3.1版本,解压iReport在任意目录,解压后的文件里面有一个iReport.bat,通过双击运行。
 3.到http://jasperreports.sourceforge.net/index.html 下载jasperreport,本文使用的是1.3.1版本,解压到任意目录,开发中需要使用其中的jasperreports-1.3.1.jarcommons-logging-1.0.2.jarcommons-collections-2.1.jar.
二.创建javabean
1.创建DailySales.java,一个简单VO bean。
import java.io.Serializable;
 
public class DailySales implements Serializable
{
   private static final long serialVersionUID = 1L;
   private String productNo;
   private String productName;
   private int number;
   private int money;
   private int id;
   
   public DailySales(String productNo, String productName, int number, int money)
   {
      this .productNo= productNo;
      this .productName= productName;
      this .number= number;
      this .money= money;
   }
   
   public String getProductNo()
   {
      return productNo;
   }
   public void setProductNo(String productNo)
   {
      this .productNo= productNo;
   }
   public String getProductName()
   {
      return productName;
   }
   public void setProductName(String productName)
   {
      this .productName= productName;
   }
   public int getNumber()
   {
      return number;
   }
   public void setNumber(int number)
   {
      this .number= number;
   }
   public int getMoney()
   {
      return money;
   }
   public void setMoney(int money)
   {
      this .money= money;
   }
   public int getId()
   {
      return id;
   }
 
   public void setId(int id)
   {
      this .id= id;
   }  
}
 
2.创建DailySalesDataSource.java,这是报表的数据源。这个类实现了jasperreports中提供的数据源接口JRDataSource,实现其中的两个方法:next()getFieldValue(JRField field)


import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRField;
 
public class DailySalesDataSource implements JRDataSource
{
 
   /**
    *测试数据,实际项目中是动态获取,也不一定是数组,可以是其它的数据类型.
    */
   private Object[][] data=
      {
          {"货号1", "物品1", 1,1000},
          {"货号2", "物品2", 2,2000},
          {"货号3", "物品3", 3,3000},
          {"货号4", "物品4", 4,4000},
          {"货号5", "物品5", 5,5000},
          {"货号6", "物品6", 6,6000},
          {"货号7", "物品7", 7,7000},
          {"货号8", "物品8", 8,8000},
          {"货号9", "物品9", 9,9000},
          {"货号10", "物品10", 10,10000}         
      };
 
   private int index= -1;
   
   public DailySalesDataSource()
   {
   }
 
   /**
    *实现了JRDataSource中的方法.判断是否还有下一个.
    */
   public boolean next() throws JRException
   {
      index++;
      return (index<data.length);
   }
   
   /**
    *实现了JRDataSource中的方法.
    *@param field是对应报表中的要填充的字段的名称.
    */
   public Object getFieldValue(JRField field ) throws JRException
   {
      Object value = null ;
      
      String fieldName = field .getName();
      
      if ("id".equals(fieldName))
      {
          value = index+1;
      }
      else if ("productNo".equals(fieldName))
      {
          value = data[index][0];
      }
      


特别推荐

广而告之