iReport
帮助文档
第一部分
功能介绍:
1.
报表结构
一个报表的结构大致是几个部分:
title
、
pageHeader
、
columnHeader
、
detial
、
columnFooter
、
pageFooter
、
summary
、
groupHeader
、
groupfooter
。
·
Title
:
每个报表一般会有一个名字,比如×××销售报表,
title
就是搁置这个名称的最好地方了,当然你也可以根据需要搁置在合适的地方。
·
pageHeader
:
报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。
·
columnHeader
:
无可非议的这里是放置列的名称,记住不是列数据。
·
Detial
:
放置需要循环的数据,比如销售记录数据。
·
columnFooter
:
放置列级别的统计计算值或是列的说明。
·
pageFooter
:
放置页级别的统计值或是页的说明。
·
Summary
:
可能需要对几页(你的报表可能有几个页组成)的统计值。比如
50
个销售记录共占用了
3
页,那么放置这些统计记录的统计值最好的地方就是
summary
。
·
groupHeader
:
每个表的内容可能需要根据某个属性进行划分显示内容和计算内容,比如希望以月份为单位每组分开显示销售记录,那么就可以定义一个组(组的定义参考后文),
groupHeader
就是放置组说明或是组标志最好的地方。
·
Groupfooter
:放置组的统计或是说明
2.
iReport
的输出格式
iReport
的预览输出格式可以支持以下几种:
PDF
、
HTML
、
CSV
、
JAVA2D
、
Excel
、纯文字、
JRViewer
,其中最常用的是
PDF
、
JRViewer
。
JRViewer
是直接以
C/S
方式作为报表的输出格式,在
JFrame
框架下输出。
Jasperreport
提供默认的
JRViewer
输出类。
3.
报表的动态对象变量、参数、字段
报表上主要的元素为静态文本
(static text)
、变量
(variable)
、动态域
(Field)
、参数
(Parameter)
。静态文本就是显示在报表上不变的文字。变量是指通过系统自带的计算得到的一些值(如当前页、总记录数等)。动态域可以是连接数据库时所的的字段,也可以是通过自定义数据源
(
可能是包含一组数据的实体类
)
。参数是程序运行时传到报表内部的变量,通常通过
Map
形式传入,可作为显示变量或者用于
sql
语句中变化的条件。
这些有关的内容,我们要介绍这些对象的使用和意义:
·字段(
Fields
):是数据库抽取出来的,希望在报表中出现的数据库内容。比如一个
ID
的所有值。
$F{ filedsName }
表示字段,是报表中最重要的部分。如果
JDBC
方式的连接,输入
sql
查询语句就可得到所有查询所得到的字段;如果是
Custom Datasource
方式,新建一字段,例如
user_id
。数据类中
getFieldValue(JRField field)
,
field
就是报表中的
$F{Field_name}
。程序中根据
JRField
对象的
name
属性来确定返回哪个值
·参数(
Parameters
):这是你的应用需要提供给报表的入口,比如你希望在报表被解释的时候提供
Where
语句的条件值,那么就可以使用参数(
Parameters
)。
$P{ parameterName }
代表参数,
{}
内是参数的名称,在报表中设定后,在运行的时候通过从外部传入的参数来动态生成标题等数据,并且可以作为查询条件传入
sql
语句使用
(
如果是使用
JDBC
直接连接数据库的话
)
·变量(
Variables
):这是报表中一些逻辑运算的表现,比如统计值。
$V{ variablesName }
每种对象的定义格式如每个对象的后面说明,比如定义一个变量(
Variables
),那么表达式就写成
$V{ variablesName }
,报表中出现的就是这个变量的名称。后文会详细的介绍使用方法。
$V{PAGE_NUMBER}
代表当前页数,
$V
代表
variable
,对现有的
group
,
$V{groupname_COUNT}
代表当前组的记录数
//
代表返回当前行的第四个字段
if("user_id".equals(field.getName()))return data[index][3]
;
4.
编译、静态运行、动态运行
Jasperreport
运行时需要的就是一个
jasper
后缀的文件,编译过程其实就是把
jrxml
后缀的文件生成
jasper
后缀的文件。(可以参考
Jasperreport
的运行原理)
静态运行和动态运行是相对的,后者带数据源运行,比如带数据库运行。前者就是静态文本运行,和数据源无关,如果报表中出现和数据源有关的对象,则以
null
显示。
5.
几种
Datasource
的方法
a) JDBC
连接数据库。新建一个连接,选择类型为
Database JDBC connection
,给这个连接一个名字,填写
driver
,数据库连接的
url
,数据库用户名密码等信息后,测试通过即可建立连接。
b) Customer JRDatasource
取得数据。首先写一个包含数据的类,它实现了
JRDatasource
接口,实现
next()
和
getFieldValue(JRFeild field)
两个方法。
Next
方法用于取得下一条记录,
getFieldValue
方法则根据
jasper
文件中定义的
field
的名称来取得对应列的数据。另外,为了在
ireport
中能预览效果,我们还需要构造取得该数据源类的方法,通常命名为
XXXDatasourceFactory
类,它提供了
getTheDatasource
类取得数据源类这个对象。在连接时,填上工厂类和取得数据源类的对应方法后即可得到数据。
然后在菜单上的
build->set active connection
选择连接,在
datasource->report query
里输入
sql
语句或
javabean
方式得到数据域。得到的数据域按名存放在
Fields
里,可拖拽到页面报表上。