iReport报表培训文档
报表功能的实现
前言
报表的生成主要包括报表模板的建立和生成代码的开发。在华腾公司小企业信贷系统的开发中,模板的生成主要是使用iReport软件来进行的,在模板生成之后会将其配置到小企业信贷系统的相关目录下,之后会在程序代码的编写过程中调用其功能并向其传递参数。以上叙述的是软件开发过程中生成报表的主要过程,本文档以下内容将对整个过程涉及到的相关信息进行简单介绍。
一.iReport介绍
本部分主要介绍iReport生成报表功能的简
单应用,和软件开发中使用到的部分功能,参照文档为《iReport中文详细教程》,其他进阶功能在本文中不做介绍
1.1 iReport简介
iReport 是一个能够创建复杂报表的开源项目,它100%使用Java 语言编写,是目前全球最为流行的开源报表设计器之一。由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。
以下是iReport 一些比较突出的功能: • 拖拽式,所见即所得的报表编辑器; • 多样的向导来简化复杂的报表设计任务; • 超过30 个排版和格式化工具;
• 报表可转换为PDF HTML EXCEL FLASH CSV
RTF
TXT
OpenOffice
Java2D
JRViewer 等格式;
• 支持所有有效的数据源。如:JDBC,CVS,Hibernate,JavaBean 等;
• 用户自定义数据源; • 无限次数的撤消/重做; • 集成脚本(scriptlet)支持;
• 内置图表支持:超过20 种的图表支持。并可扩展;
• 国际化:集成超过15 种语言; • 报表模板与报表库样式管理;
多少个页面也不会再出现Title band 中的内容。就是报表的标题。
pageHeader Band:pageHeader 段中的内容将会在整个报表中的每一个页面中都会出现,显示的位置在页面的上部。如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中,pageHeader 中的内容将显示在页面的最上端,即页眉。
pageFooter Band:显示在所在页面的最下端,即页脚。
Detail Band:报表内容段,在这个Band 中设计报表中需要重复出现的内容,Detail 段中的内容每页都会出现。
columnHeader Band:针对Detail Band 的
表头段,一般情况下在这个段中画报表的表头。
columnFooter Band:针对Detail Band 的表尾段。
Summary Band:表格的合计段,出现在整个报表的最后一页中的Detail band 的后面,一般用来统计报表中某一个或某几个字段的合计值。
lastPageFooter:内容将会出现在报表的最后一页的最后部分。
为了实际演示各个band 的生成效果,我们可以在报表中的各个band 里添加不同的对象,以测试各个band的作用。
步骤:
第一步:新建文档,报表名称命名为:MyFirstReport,然后单击“OK”。
第二步:设置JDBC 连接参数
单击“Date连接/资料来源”,出现如下界面:
然后单击“New”,出现如下界面:
选择“Database JDBC connection”项,单击“Next”,
设置好参数,单击“Test”,如果测试成功单击“Save”保存,如果测试没有成功,请检查一下以上步骤
。
第三步:单击Data报表查询。在query editor 里输入下面的语句:
select * from tb_employee,然后单击“OK”
第四步:单击“不会变动的文字”按钮,添加各个Band 内容。
在报表中的各个band 分别放置如下内容:
第五步:将要显示的字段拖到“detail”栏内
第六步:单击“执行报表”查看结果:
启动报表,生成的效果如下:
最后一页:
1.3 字体和样式
一个style 是一个预定义的属性的集合,用来控制元素的外观(比如背景色、边框线、字体等)。我们可以为我们的报表定义一个默认的style。
要为一个元素应用一个style,我们可以选择该元素并从元素的属性窗口common 标签里的
style 列表选择你需要的style。Fonts 是用来描述text 的外观特征。
1.3.1、字体(Font)
通常定义一个字体,我们需要做下面几件事情:
-Font name(字体名称) -Font dimension(字体大小) -Attribute(属性,诸如
bold-faced,italics,underlined,barred)
如果我们需要导出PDF 格式的报表,需要为字体添加下面的信息:
PDF Font Name:PDF 字体名称(预先定义PDF 字体或一个在classpath 里的TIF 文件的名称)。
PDF Embedded:当使用一个外部的TTF 类
别的字体文件生成报表时是否把它包含在PDF 文件里的一个标志。
PDF Encoding:指定一个字体编码名称。 单击“格式化报表字形”可以创建自定义的字体。
如果我们需要将报表导出成PDF 格式,将会使用指定的PDF 字体,其它属性将会被忽略掉。
1.3.2、样式(Styles)
我们可以选择主菜单的“Format Styles” 来定义一个style。如下图所示:
单击“格式化Styles”可以创建自定义的样式。
点击“New”按钮添加一个新的style。在弹出的窗口中我们可以定义一些属性,如果我们需要某个属性的值,我们可以点击按钮来实现。
在每个元素属性窗口的“Common”标签里有一个style 属性下拉框,如果我们需要为一个元素设置一个style,我们可以在这个下拉框里选择我们定义好的style,这样就可以把一个style 应用到一个元素上面了。
我们可以为一个Style 加一个动态的条件,当条件满足的时候采用某个style,否则就采用默认的style。
举个例子,还是以数据库里的employee 表为例,如果员工的工龄大于3 时,我们让工龄以红色加粗的字体显示。
打开Query 窗口,输入下面的查询SQL: Select * from tb_employee
新建一个style,在弹出窗口的style conditions 里新建一个conditions,在表达式窗口里输入下面的表达式:
($F{employee.workingYear}.intValue()>2?new Boolean(true):new Boolean(false))
如下图:
新建的style 如下图:
接下来把员工姓名和工龄到报表当中,并将我们新建的style 应用到薪水这个field 上,如下图:
启动查看运行效果如下:
1.4 相关的函数设置
刚才我们已经看到了,在iReport中也是可以设定一些函数的,这些函数会更有效的帮助我们实现报表中的一些功能和统计报表中的数据,在报表生成中可以通过一些函数来简化我们的开发过程:
表中$V{T2}会对$F{A2}行的数据进行一个统计行的操作,而这是通过报表变量(Variables)实现的。
Variables 是用来存储对某些字段计算后的结果,比如sum 等。在iReport中Variables 也是有数据类型的。你必须为一个Variable 实例声明一个java类型。上图显示了如何创建一个新的Variable。看一下每个字段的意思: Variable name: variable 的名称,我们可以在表达式中通过下面的方法来引用一个Variable: $V{variable name}
Variable Class Type : variable 也可以是任
意一个Java 类型,在下拉框里你可以看到大多数常用的类型,如java.lang.String 等。 Calculation Type : 一个计算类型可以用来计算结果。当一个预先定义的值是“nothing”时,那它的意思是不做任何计算。ireport 会根据指定的计算类型和从数据源中获取的每一条记录计算出结果,然后去更改variables 的值。做一个变量的计算意为着去执行一个表达式,如果计算类型为nothing,那么ireport 将会根 据variable expression 为variable 赋值。计算类型列举如下:
类型:说明
Nothing :不做任何计算
Count :对记录集数量进行循环累加(计算有多少条记录),这和sum 不一样,sum 的计 算是针对数字的,会对数字进行累加操作。 Distinct Count :也是对计算有多少条记录的累加操作,只是在累加过程中会忽略已经出现的记录(比如某个字段的值已经出现后就不会再记录)
Sum:添加每一次表达式(这里的表达式只能是数
字类型)迭代的结果到变量中
Average:它用算术的方法来计算表达式累加结果的平均值
Lowest:返回表达式最小值 Highest:返回表达式最大值
StandardDeviation:根据表达式所有值返回标准方差
Variance:返回表达式接收到的值的变化 System:不做任何计算并且表达式也是没有价值的,在这样的用例中,报表引擎仅仅保 存内存中variable 的最后的值。
Reset Type : 重置类型。表示一个变量在什么时候做重置操作。reset 类型如下:
类型名称:说明
None :任何时候都不做重置操作
Report :在报表创建的时候Variable 才会对表达式进行初始化
Page Variable :的初始化在每一页都做一次reset 操作
Column :Variable 的初始化在每一列都做一次
reset 操作(这里的Column 指的是report 里的page的column,每个报表的column 可以通过报表的Editàreport properties 窗口进行修改)
Group :Variable 的初始化在每一个组都做一次reset 操作
Reset Group :如果group reset type 被勾选,这里就要选择group 名称(关于group 可以参考后面的章节)。
Increment : 它指定当一个variable 值被评估或当你想要这个组采用类似于subtotals 或averages 来计
算,increment 类型可以参考下面的表。 Increment Group : 如果这个group 的increment type 被勾选它将指定这个组决定variable 的 increment。
Custom Incrementer Factory Class : 指定一个实现了JRIncrementerFactory 接口的java 类名称,通常
用来定义一些诸如sum 之类的非数字类型的操
作。
Variable Expression : 它是一个java 的expression,用来标识variable 每一次迭代的值。
Initial Value Expression : 它是一个为variable 初始化时采用的expression. 内置的variables:
和parameters 一样,ireport 提供了一些内置的variables(这些由报表引擎直接管理),这些变量是只读的,
不能被用户修改,如下表所示: Variable PAGE_NUMBER COLUMN_NUMBER REPORT_COUNT PAGE_COUNT COLUMN_COUNT _COUNT 名称说明 它包含当前页的页。 它包含当前的列数。 当前的记录数目 当前的页号 当前的列号 在里的记录总数二.进行配置
以本范例进行简介
三.生成JAVA代码
参照已完成的JAVA代码:
BhReportBhCorploanquerySort.Java进行功能简介。同时要强调使用批量处理的必要性,并交代生成报表的种类和存储位置。