说到Java报表工具,我接触过的只有FineReport(帆软)和JasperReports,这两个都用过,帆软是收费的而JasperReports是免费的,首先第一感觉帆软功能强大,支持导出的报表格式丰富,但是坑很多(一个格子的属性设置不对整个报表都会乱掉,比如左父格什么的,而且有时少量数据测试是没问题但数据量一大报表就乱掉了,不管什么原因引起,首先这就直接导致不容易发现问题,去年项目上线后就被这样坑过一次),再来谈谈JasperReports,开源免费,使用方面和帆软比是不如它强大,不能导Excel,通常情况下只用来导PDF,但在大多数情况下还是能满足需求的,毕竟免费的不能要求太高哈,So,本篇blog就总结一下JasperReports以及iReport的使用方法和细节。
下载iReport我们可以看到目前官方首推的可视化报表设计工具是Jaspersoft Studio(基于Eclipse),早期的iReport从5.5之后就不再提供更新了,但之前一直用的是iReport开发报表所以本篇blog就基于iReport这个工具进行开发,个人感觉还是蛮好用的(联想到了当年用Eclipse开发Android打死都不换Android Studio T_T),我们直接下载iReport Designer可视化编辑器即可,如下图所示:
当然还必须要有JasperReports Library才能通过Java程序来调用报表,由于只是一个jar包所以我就直接上传到CSDN供大家下载了,我使用的版本是jasperreports-5.6.1,下载地址:
下载安装之后就可以使用它来创建报表文件了。
创建报表打开iReport,点击文件–>new,可以看到一个New file面板:
可以看到左侧的菜单提供了多种报表图表类型,由于我们主要做基础报表所以只关注Report(报表)就可以了,而右侧提供了一些模板,比如纵向A4,横向A4等,通常我们用的最多就是第一个纵向A4了,选择它并点击“Open this Template”,接下来会弹出命名和定位的面板,输入报名文件名称和文件存储的目录即可:
最后点击完成即可进入报表的编辑界面了:
首先我们来看一下iReport的主界面:
上图是一个设置好的标准的编辑界面,左侧是inspector区域,中间是主编辑区域,右上是组件面板区域(如果没有通过Ctrl+Shift+8组合键调出),右下是属性窗口,底部是输出区域,左侧是Problem Window(报错窗口),右侧是Output Window(输出窗口),在菜单栏下面标出的是DB连接设置区域。首先我们从主编辑区域看起:
如上图,iReport把一个报表按如上图的方式进行分割,顾名思义也就是不同的区域应当放置不同的内容,操作起来的话和C#做WinForm程序的感觉差不多,就是拖控件!设属性!下面我们举例做一个成绩报表,首先是标题,一般静态文本我们统一用组件面板中的Static Text(Lable),如下图:
注意一下这里最常用的两个组件就是Static Text和下面的Text Field了,Static Text通常用于放静态文本,例如:标题、列名等等,而Text Field通常用来放动态的表达式,例如数据库的查询结果,函数等等。下面从组件面板中拖动Static Text到编辑区的Title中:
如图上面的一排工具栏可以设置组件内容的对齐方式以及字体样式等等,但更多情况下我们还是会在属性面板来设置这些: