前段时间接触了IReport,为巩固自身掌握,特此总结一下近段时间的所学。
本章节主要介绍环境的配置、界面工具操作等
IReport 是JasperReport的可视化开发工具,JasperReport使用XML来定义一个报表的结构,iReport可以让用户很方便地定义报表,而不需要手工去写这些XML文件。是免费的,不过其教程却是收费的。
1. 首先你要得到它们最新的版本,你可以到下边的地址下载 (本文版本2.0.5)
iRport: http://ireport.sourceforge.net
Jasperreport: http://jasperreports.sourceforge.net
2.下载JDK
sun: http://www.sun.com
安装JDK,配置好环境变量。
PATH: “java的安装目录/bin”
JAVA_HOME : “java的安装目录”
CLASSPATH: “java的安装目录/lib”
3.准备数据库
IReport支持绝大多数数据库,只要该数据库提供JDBC驱动,本文提供MySql数据库作为例子。此外JasperReport不需要任何配置,只需要将下载之后的jar包,放在Classpath下即可。
4.工作原理
使用iReport编辑生成的文件为.jrxml文件,通常要编译生成.jasper文件,我们在项目中即使用.jasper文件,以加快生成速度(省略了编译时间),但如果需要动态编译报表,那么,还是需要直接使用.jrxml文件的。 iReport 的预览输出格式可以支持以下几种:PDF、HTML、CSV、JAVA2D、Excel、纯文字、JRViewer,其中最常用的是PDF、JRViewer。
5.报表结构
一个报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。
·Title:每个报表一般会有一个名字,比如×××销售报表,title就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。
·pageHeader:报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。
·columnHeader:无可非议的这里是放置列的名称,记住不是列数据。
·Detial:放置需要循环的数据,比如销售记录数据。
·columnFooter:放置列级别的统计计算值或是列的说明。
·pageFooter:放置页级别的统计值或是页的说明。
·Summary:可能需要对几页(你的报表可能有几个页组成)的统计值。比如50个销售记录共占用了3页,那么放置这些统计记录的统计值最好的地方就是summary。
·groupHeader:每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),groupHeader就是放置组说明或是组标志最好的地方。
·Groupfooter:放置组的统计或是说明
6.工具外观
工具最初是英文界面,通过菜单Option-settings-General ,在Language 处选择中文确定即可。
在IReport 中预览时,只有内置的JRViewer是不用做任何设置,其余的如PDF,HTML 都需要绑定具体的程序,在External Programs页签可以设置。
下面介绍几个重要的概念
A、报表的动态对象:变量、参数、字段
在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)这些有关的内容,我们要介绍这些对象的使用和意义:
--字段(Fields):是数据库或其他数据源中抽取出来的,表示方式 $F{ filedsName }
--参数(Parameters):这是你的应用需要提供给报表的入口,通过接受应用不同的参数,而生成不同结果的报表, 表示方式 $P{ parameterName } 还有一个表示方式$!P{ parameterName } ,可以表示应用传入的动态SQL
--变量(Variables):这是报表中一些逻辑运算的表现,表示方式 $V{ variablesName }
B、编译、静态运行、动态运行
Jasperreport运行时需要的就是一个jasper后缀的文件,编译过程其实就是把jrxml后缀的文件生成jasper后缀的文件。(可以参考Jasperreport的运行原理) 静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,如果报表中出现和数据源有关的对象,则以null显示。
C、表达式的语法
(1)$F{FIELD} 引用名为FIELD的字段;
(2)$V{VAR} 引用名为VAR的变量;
(3)$P{PARAM} 引用名为PARAM的参数;
(4)$P!{PARAM} 引用名为PARAM的参数;这个特殊的语法仅能用于report的查询中。它允许插入参数的内容到查询字符串中。例如,它能被用于创建一个带通过参数来指定WHERE条件的动态查询。
$R{keyName} 在resource bundle中检索带keyName关键字的字符串。
注意:表达式是用Java或Groovy写成的,这意外着可以用Java强大的功能,如调用方法,允许构建无限复杂的表达式。还要注意,表达式的结果总是一个对象。