JFreeReport是由JFree组织开发的一个基于java的报表组件。利用JFreeReport组件可以完成大多数样式的报表,并且能够将其输出为pdf、xls、cvs、html等不同格式的文件和打印,为程序开发人员解决报表问题提供了很大的方便。
JFreeReport组件包括一个核心包以及几个扩展包,可以到http://reporting.pentaho.org/网站下载。由于是开源的,所以可以直接得到其源代码。现在JFreeReport加入到了Pentaho,所以JFreeReport的最新版本只到jfreereport-0.8.7-9.jar,之后就以Pentaho Report Designer命名了。
使用JFreeReport生成报表通常需要以下三个基本步骤:
生成可通过TableModel接口访问的数据;
生成一个JFreeReport实例,他定义了我们如何格式化显示数据;
将数据和JFreeReport实例连接起来,并且将该JFreeReport实例传给PreviewDialog的一个实例显示给用户。
JFreeReport组件的结构
JFreeReport组件的核心对象就是JFreeReport对象,我将其视两部分:一部分是报表格式定义,另一部分是数据存储。JFreeReport组件的数据使用的是java.swing.table.TableModel类,我主要讲讲JFreeReport的报表格式定义以及输出方法。
JFreeReport将报表分为以下几个部分:
报 头(ReportHeader)、
报 尾(ReportFooter)、
页 头(PageHeader)、
页 尾(PageFooter)、
分组头(GroupHeader)、
分组尾(GroupFooter)和数据域。
表 头(ReportHeader)——内容显示在整个报表的开头,可以包括报表名称等内容。
表 尾(ReportFooter)——内容显示在整个报表的末尾。
页 首(PageHeader)——内容显示在每一页的首部,第一页则显示在ReportHeader下面,可以包括报表日期、填表人等内容。
页 尾(PageFooter)——内容显示在每一页的末尾,可以包括页号等信息。
分组头(GroupHeader)——如果将数据分组,则GroupHeadar内容会显示在每一组分组的头部。
分组尾(GroupFooter)——如果将数据分组,则GroupHeadar内容会显示在每一组分组的头部。
数据域——报表数据,一般位于每页的中间部分。