JasperReports是一个基于Java的开源报表工具,它可以在Java环境下像其他IDE报表工具一样来制作报表。JasperReports支持PDF、HTML、XLS、CSV和XML文件输出格式,目前最新版本为JasperReports3.7.1,大家可在http://jasperforge.org/projects/jasperreports下载使用。
在具体的报表应用开发中,通常使用iReport加JasperReports的报表开发模式,其中iReport是一个可视化报表模板编辑工具,专门为JasperReports提供报表模板。iReport的设计结果保存为.jrxml的XML文件,最终被编译成.jasper文件供JasperReport报表引擎解析渲染。目前iReport的最新版本为iReport3.7.1,大家可在http://ireport.sourceforge.net下载使用。
双击下载的iReport安装包(如:iReport-3.7.1-windows-installer.exe),根据提示指定相应的安装路径即可轻松完成安装。
为了使PDF报表预览工作正常,需要将iText-2.1.0.jar与iTextAsian.jar加入到iReport的classpath中来。具体操作方法为:选择“工具→选项→classpath→Add JAR”选项,将“\iReport-3.7.1\ireport\modules\ext”下的iText-2.1.0.jar与iTextAsian.jar加入到当前的classpath中,重启iReport即可生效。
启动iReport后,首先出现的是快速报表向导页面,如图4-13所示,展示了iReport的报表制作三步曲(数据源配置、报表设计以及报表预览)。
图4-13 iReport的报表设计向导页
单击“数据源配置”图标开始数据源配置,如图4-14所示,iReport支持各类主流的数据源技术,此处我们以配置JDBC数据源连接为例。
图4-14 配置iReport的报表数据源
接下来单击“报表设计向导”按钮开始报表模板的设计,在弹出的报表模板对话框(如图4-15所示)中选择“A4 竖向空白模板”,然后单击“Launch Report Wizard”按钮启动报表设计向导(如图4-16所示)。在弹出的报表向导设计对话框中分别设置报表的名称与报表文件的存放路径、报表所用的数据源及具体的查询语句、报表所用的查询结果中的具体数据字段以及统计分组字段设置等。最后单击“Finish”按钮完成向导的配置进入报表设计主界面。
图4-15 iReport的报表模板选择对话框
图4-16 iReport的报表设计配置向导
iReport3.7.1 的报表设计操作界面如图4-17所示。
从图4-17 可以看出,一个完整的报表模板基本由报表标题(Title)、页头(pageHeader)、栏头(columnHeader)、内容详情(Detial)、栏尾(columnFooter)、页脚(pageFooter)、末页页脚(lastPageFooter)、总计(Summary)等几个部分组成。我们在设计具体的报表模板时,根据实际的需要进行取舍,凡是不需要的部分,通过修改其高为零进行屏蔽。
图4-17 iReport的报表设计操作界面
例如:标题区高 50、页头区高 0、栏头区高 30、内容区高 30、栏尾区高 0、页脚区高 40、最末页页脚区高 0 及总计区高 45 的设计效果(见图4-18)。
图4-18 报表模板设计
报表的预览效果如图4-19所示。
预览OK后,将报表的语言Language属性设置为“Java”,然后单击“编译”按钮,将当前的报表模板文件编译成.jasper文件供JasperReport报表引擎解析渲染。
图4-19 报表预览效果
iReport报表设计制作过程中的有关说明见表4-8。
表4-8 iReport报表设计制作过程中的说明
设计好报表模板后,就可以在Web应用中通过JasperReports实现各种各样的报表输出了,在使用JasperReports输出报表之前,需要将其需要的JAR包(jasperreports解压后dist目录下的所有JAR包、lib目录下的所有以“commons-”开头的JAR包、spring-core-2.5.5.jar与spring-beans-2.5.5.jar、PDF报表时需要的iText-2.1.7.jar与iTextAsian.jar、Excel报表时需要的poi-3.5-FINAL-20090928.jar与jxl-2.6.jar)复制到WEB-INF/lib下。
下面分别针对HTML报表、Excel报表与PDF报表为例讲解JasperReports的应用。
(1)创建一个封装数据源的DBConnectionBean.java(见例程4-24)。
例程4-24 DBConnectionBean.java
(2)创建一个reportToHTML.jsp(见例程4-25)演示HTML报表的JSP实现。
例程4-25 reportToHTML.jsp
(3)创建一个reportToPDF.jsp(见例程4-26)演示PDF报表的JSP实现。值得注意的是,凡需要进行PDF报表输出的,在设计报表模板时,切记将各中文报表内容元素的“PDF fontname”设置为“STSong-Light”,将“Pdf Embedded”勾选,再把“Pdf Encoding”设置为“UniGB-UCS2-H”。
例程4-26 reportToPDF.jsp
(4)创建一个reportToExcel.jsp(见例程4-27)演示Excel报表的JSP实现。
例程4-27 reportToExcel.jsp
本实例的完整源代码请参考配套光盘的“源代码”部分。