iReport是一个能够创建复杂报表的开源项目,它100%使用Java语言编写,是目前全球最为流行的开源报表设计器之一。
由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。
iReport的下载地址是:http://ireport.sourceforge.net/cap3.html
介绍一下ireport的报表结构
如下图所示:
title:只在报表的第一页显示,后面的就不在显示。
page header :相当于页眉,在第一页位于title的下面,而后的页中是位于最上部。
page footer :相当于页脚,和page header是想对应的。
detail :报表内容显示的部分,这部分内容是重复的,相当于迭代的过程。
column header :针对Detail Band 的表头段,一般情况下在这个段中画报表的表头
column footer :和column header 相对的。
summary :出现在整个报表的最后一页的detail的下面,统计总值结果。
下面是设置数据源。
选择相应的连接方式即可。
下一步是选择相应的sql语句,得到你要显示在表报中的数据。
然后会再左侧的field中看到我们所查询到的数据列,然后根据自己的需要拖动相应的列到我们的band中即可。
注意:对于拖动到band中的列,不能移动到另外一个band中,会产生错误
ireport中三种参数的介绍:
field,parameters,variable。
field:可以用两种方式创建field,一种是 query,一种是java bean来创建。
parameters:是在打印的时候从程序中传值到报表中的。相当于parameters在这里只起到了传值的作用。
ireport内建了一些parameters,如下所示,可以直接调用:
参数名 | 说明 |
REPORT_PARAMETERS_MAP | 它是一个java.util.Map类型的对象,可以通过它来传给填充报表去填充报表里所有的parameters,在这个参数里还包含用户定义的parameters. |
REPORT_CONNECTION | 一个JDBC的Connection参数,报表可以根据传入的JDBC Connection来获到相应的数据 |
REPORT_DATASOURCE | 为报表中的Connection提供一个DataSource。外部传入的时候类型也要是DataSource类型 |
REPORT_SCRIPTLET | 报表生成时使用的Scriptlet实例,如果没有指定ScriptLet,那么这个parameters将使用net.sf.jasperreports.engine. |
IS_IGNORE_PAGINATION | 通过这个参数你可以控制分页功能是打开还是关闭。默认情况下,分页是打开的。但是如果导出为HTML或EXCEL时不进行分页处理。 |
REPORT_LOCALE | 它被用来设置报表所处的地区。如果没有提供地区,那么将采用系统默认的地区。 |
REPORT_TIME_ZONE | 设置报表的时区,如果没提供的话采用系统默认的。 |
REPORT_RESOURCE_BOUNDLE | 为报表指定要加载的资源文件,在国际化一章中介绍了如何使用资源文件来构建报表。 |
variable:存储某些字段计算后的结果。
ireport内建了一些变量,如下所示:
类型 | 说明 |
Nothing | 不做任何计算 |
Count | 对记录集数量进行循环累加(计算有多少条记录),这和sum不一样,sum的计算是针对数字的,会对数字进行累加操作。 |
Distinct Count | 也是对计算有多少条记录的累加操作,只是在累加过程中会忽略已经出现的记录(比如某个字段的值已经出现后就不会再记录) |
Sum | 添加每一次表达式(这里的表达式只能是数字类型)迭代的结果到变量中 |
Average | 它用算术的方法来计算表达式累加结果的平均值 |
Lowest | 返回表达式最小值 |
Highest | 返回表达式最大值 |
StandardDeviation | 根据表达式所有值返回标准方差 |
Variance | 返回表达式接收到的值的变化 |
System | 不做任何计算并且表达式也是没有价值的,在这样的用例中,报表引擎仅仅保存内存中variable的最后的值。 |
类型名称 | 说明 |
None | 任何时候都不做重置操作 |
Report | 在报表创建的时候Variable才会对表达式进行初始化 |
Page | Variable的初始化在每一页都做一次reset操作 |
Column | Variable的初始化在每一列都做一次reset操作(这里的Column指的是report里的page的column,每个报表的column可以通过报表的Editàreport properties窗口进行修改) |
Group | Variable的初始化在每一个组都做一次reset操作 |