由于最近需要在管理系统中添加打印报表的功能,因此参考网上的众多大师的文章,在这里做一下记录,能方便自己以后回顾。
首先,我用的是ireport3.5.2,用的JasperReport3.7.0,在做实验过程中发现用ireport3.5.2制作出来的报表模板,用JasperReport3.1去做相应处理的时候会有莫明的错误出现,更换了3.7之后就正常了,具体原因没有仔细去查明,有空的时候一定要去咨询一下高手的意见。
1.首先用IReport制作报表模板
有时在工具栏上会找不到按钮,比如设置ReportDataSource按钮,EditReportQuery按钮等,这时可以参考如下步骤:
视图->工具栏->定制->Data->找到ReportDataSource按钮后拖到工具栏上即可
1.1 设置classpath
这里我主要制作的报表是基于有数据源的情况,数据源主要就JavaBean和JDBC这二种。因此需要先指定classpath,添加classpath的步骤如下:
工具->选项->iReport标签->Classpath标签->AddJAR按钮可以将一些使用的包加入,如oracle的数据库驱动,AddFolder按钮可以一般适用于JavaBean做数据源的情况,将这些JavaBean生成的class文件所在的文件夹打开即可。
1.2 设置数据源
1.2.1 设置JDBC数据源
点击ReportDataSource按钮->点击new按钮->选择DataBase JDBC Connection->Name中写个名字为这个DataSource命名,在JDBC Driver中选择相应的数据库驱动,在JDBC URL中写入数据库地址,Username中写用户名,Password中写密码,点旁边的Save password可以保存密码,点击Test按钮可以测试一下连接是否正确,配置完成后点击Save按钮即可
1.2.2 设置JavaBean数据源
点击ReportDataSource按钮->点击new按钮->JavvaBeans set datasource->Name中写个名字为这个DataSource命名,在Factory class中写产生数据集的那个工厂类,由于事先已经指定了classpath,一般我就指定工程的bin目录,因此就写com.xxx.xxx即可,至于生产数据集的工厂类如何写请参考2.2,对于以下的解释是我自己的理解,没有读过相关文档,如果在今后的讨论中发现有误会再回过来修证,Collection of javaBeans指的是生成出来的集合是一个容器类,Array of javaBeans指的是生成出来的集合是一个数组,The static method to call to retrive...中填的是获取这个集合的方法名,这个方法一定要是静态的。点击Test可以测试一下是否成功后点击Save保存
1.3 设计报表
1.3.1 以JDBC数据源的报表设计
数据源选择JDBC数据源之后,点击EditReportQuery按钮,选择Report query标签,写sql语句,之后在列表中会出现相应字段,点击OK按钮,在Report Inspector面板中,这些字段就会显示在Fields结点中,可以供使用。
1.3.2 以JavaBean数据源的报表设计
数据源选择JavaBean数据源之后,点击EditReportQuery按钮,选择JavaBean DataSource标签,填写JavaBean的路径,点Read attributes会显示所有的属性,点击Add selected field(s)按钮可以将所有字段加入,点击OK按钮,在Report Inspector面板中,这些字段就会显示在Fields结点中,可以供使用。
2. 通过程序填充数据
2.1 数据源为JDBC的情况
2.2 数据源为JavaBean的情况
建立生成数据集的Factory
数据源中的对象
数据源,填充报表中的数据
将报表导出excel