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