JasperReport4.0.1 用户手册目录1.介绍 (4)2.准备工作 (4)2.1环境要求 (4)2.2下载 (5)3.报表生命周期 (5)4.报表结构 (5)5.Report Datasource (6)5.1 Database JDBC connection (6)5.2 JavaBeans set datasource (9)5.3 File CSV datasource (11)5.4 Microsoft Excel(xls)data source (12)6.报表元素(Report Elements) (12)6.1 Static Texts (12)6.2 Text Field (13)6.3 Crosstab(交叉报表) (13)6.3.1 基本设置 (13)6.3.2 设置报表的语言 (15)6.3.3 对Row Groups中的变量的操作 (16)6.3.3 对Column Groups中的变量的操作 (17)6.3.4 对Measures中的变量的操作 (17)6.3.5 预览报表效果 (18)6.4 List (18)6.4.1 设置List引用的dataset,为List所引用的参数赋值 (18)6.4.2 设置List中内容的扩展方向 (18)6.4.3 设置List中内容的扩展个数 (19)6.4.4 示例中的报表的设计以及运行效果如下图(截取部分) (19)6.5 Table(表格) (20)6.5.1 Table如何获得连接 (20)6.5.2 如何向Table中的参数传值 (20)6.5.3 如何删除或添加一列 (20)6.6 Break(分页符) (20)6.7 Chart(图表) (20)6.8 Subreport (22)6.8.1 为子报表的参数传值 (22)6.8.2 子报表向主报表返回值 (23)7.其它内容 (23)7.1 分组报表 (23)7.2组件对齐技巧 (24)7.3 Style (24)7.4 Scriptlet (25)8、使用中出现的问题以及解决办法 (26)用户手册中demo 需要导入数据源,导入方法:1.介绍iReport 是一个能够创建复杂报表的开源项目,它是用Java 语言编写的,是目前全球较为流行的开源报表设计器。
它是开源报表引擎JasperReport 的可视化设计工具。
由于是开源项目,所以有很强的扩展性。
API 地址: /api/index.html2.准备工作2.1环境要求iReport 运行时需要JDK1.5 及以上版本,为了能编译我们的报表文件我们需要完整的安装JDK。
2.2下载iReport下载地址:/projects/jasperreports3.报表生命周期JasperReport 生成的报表文件的生命周期和一个普通的java 类非常相似。
在java 当中,有一个以.java 为扩展名的源文件,内容按java 语言的规则去写,源文件通过编译器编译生成一个.class 文件,当class 使用的时候,它以一个实例的形式通过java 的解释器加载到内存当中。
同样,一个Jasperreports 报表文件也有一个通过DTD 定义的xml 格式的源文件,当报表生成的时候会把这个xml 格式的源文件编译成一个jasper 类型的文件,jasper文件可以在我们的应用程序中被加载生成最终的报表。
4.报表结构在本章中我们将一起来分析一下报表的结构,看一下报表中每一部分的作用,以及在生成报表的时候每一部分产生的效果。
JasperReports 被垂直分成若干个部分,每一个部分我们叫它为“band”。
每一个band 在都有自己的特性,在报表生成的时候有些会打印一次,有些会打印多次。
Title Band:title段只在整个报表的第一页的最上面部分显示。
pageHeader Band:顾名思义,pageHeader 段中的内容将会在整个报表中的每一个页面中都会出现,显示在位置在页面的上部,如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中pageHeader中的内容将在显示在页面的最上端。
pageFooter Band:与pageHeader Band对应,显示在所在页面的最下端。
Detail Band:报表内容段,在这个Band 中设计报表中需要重复出现的内容。
columnHeader Band:针对Detail Band 的表头段,一般情况下在这个段中画报表的表头。
columnFooter Band:针对Detail Band的表尾段。
Summary Band:表格的合计段,出现在整个报表的最后一页中的Detail band 的后面,一般用来统计报表中某一个或某几个字段的合计值。
5.Report DatasourceDatasource是报表中数据的来源,可以理解为数据库连接。
JasperReport支持很多种的Datasource,在这里只介绍其中的几种。
5.1 Database JDBC connection此处以Oracle数据库为例。
(例子:demoOfReport\JDBCDatasource.jrxml 数据源:oracle)步骤一:设置Classpath,打开【工具】->【选项】,在弹出的窗口中选择“Classpath”标签页,如图5.1,点击【Add JAR】,选择对应数据库的驱动包。
图5.1步骤二:设置Connection图5.2图5.3点击【New】,在弹出的窗口中选择【Database JDBC connection】,点击【Next】后界面如图5.4图5.4点击【Test 】按钮可以测试连接是否成功,点击【Save 】进行保存。
步骤三:设置query新建一张空报表后,界面如图5.5图5.5填写对应的sql图5.6在图5.6中,【Automatically Retrieve Fields】处的勾选框最好勾上,否则填写完SQL后需要点击【Read Fields】按钮来手动进行操作。
5.2 JavaBeans set datasourceDemos位于demoOfReport\javabean文件夹下步骤一:写java类Student.java(实体类)和StudentFactory.java(工厂类)步骤二:设置Classpath,打开【工具】->【选项】,在弹出的窗口中选择“Classpath”标签页,如图5.1,点击【Add Folder】,选择StudentFactory.class(注意是编译后的文件)所在的文件夹。
步骤三:设置Connection在图5.3所示的界面中点击【New】,在弹出的窗口中选择【JavaBeans set datasource】,点击【Next】后的界面如图5.7图5.7步骤四:新建一张空报表(由于操作比较简单,在此不啰嗦了) 步骤五:设置query图5.8在图5.8所示的界面中点击【Read attibutes 】按钮后界面如图5.9 自定义的名称用于获得数据的类名图5.9点击界面中的【Refresh Preview Data 】按钮(图5.9中没有截下来)可以浏览数据。
注意:.java 文件的编码格式要设置为UTF-8,否则数据中有汉字时会出现乱码。
5.3 File CSV datasourceDemos 位于 demoOfReport\csv 文件夹下步骤一:设置Classpath ,选择.csv 文件所在的路径(如何设置Classpath ,见5.1章) 步骤二:设置Connection与5.1章中的类似,只是选择datasource 时选择的是【File CSV datasource 】,打开界面如图5.10选择要进行扩展的字段,点击【Add selected field(s)】图5.10步骤三:设置query Array点击如图5.5所示的图片,弹出如图5.11所示界面图5.11最后点击【OK】保存。
5.4 Microsoft Excel(xls)data source以Excel作为数据源的情况和以.csv文件作为数据源的情况类似,就不再赘述了。
6.报表元素(Report Elements)在本章中我们将要解释可以在报表中使用的组件及他们的相关属性和使用方法。
对于所有组件的共通点:(1)加载方式:将对应的组件拖拽到相应的区域。
(2)查看对应的属性:选中组件,在【属性】窗口中查看对应的属性,如果当前视野中没有【属性】窗口,从【窗口】菜单中选择【属性】。
6.1 Static Text用于写静态文本,即不是动态的文本。
6.2 Text Field可以在组件中写各种表达式,如:$F{Field}代表Field字段的值,$V{Var}代表变量Var 的值,还可以在TestField组件中填写java表达式。
6.3 Crosstab(交叉报表)交叉报表:横向和纵向同时扩展的报表。
下面做一个交叉报表的例子:6.3.1 基本设置Demo位置:demoOfReport\ crosstab.jrxml所用数据源:JasperReport自带的数据源“Sample Database”在报表中填写SQL:SELECT OrderId, ShipCountry, Freight, OrderDate, RequiredDate, ShippedDate FROM Orders WHERE ShippedDate IS NOT NULL将组件放在Summary中,会出现如图6.1所示画面选择数据来源图6.1点击【下一步】,如图6.2图6.2选择对应的字段进行纵向扩展。
点击【下一步】,结果如图6.3选择要进行横向扩展的字段,点击【下一步】。
如图6.4图6.4在图6.4所示界面中选择交叉区域中要显示的数据,点击【下一步】后,再点击【完成】。
6.3.2 设置报表的语言图6.56.3.3 对Row Groups 中的变量的操作图6.6对变量重命名后,要将报表中引用该变量处的名字修改过来,如图6.7图6.7填写新名称可以在【属性】中查看现有属性,以及修改属性。
6.3.3 对Column Groups 中的变量的操作重命名变量,与6.3.2中对“Row Groups ”的操作相同,将变量名称由“FREIGHT ”变为“FreightColumn ”,并将变量对应属性中的“Bucket expression ”设置为“Integer.valueOf($F{FREIGHT}.intValue()/100)”,“Bucket Value Class ”设为“ng.Integer ”。