是一款报表打印组件,是开放源代码和免费的。
http://jasperforge.org/projects/jasperreports
jFreeChart
主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。
http://www.jfree.org/jfreechart/
iReport
用来以可视化的方式设计、生成 JasperReport 所使用的报表格式文件。
http://jasperforge.org/projects/ireport
汉字乱码
Title Band:title 段只在整个报表的第一页的最上面部分显示,除了第一
页以外,不管报表中共有多少个页面也不会再出现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
的后面,一般用来统计报表中某一个或某几个字段的合计值。
符合条件的用style conditions,否则style。
字段$F{SALARY}的值大于3500,用样式style conditions,否则style。
在查询中使用Parameters(参数)
$P!{parameter name}
查询写法如下:
Select * from employee $P!{MyWhere}
查询时实际提交的字符串是:
Select * from employee where dept_id=D11
JasperReports 内嵌的Parameters
变量(Variables)
Calculation Type : 一个计算类型可以用来计算结果
Band
Print When expression 里必须返回一个java.lang.Boolean 类型的对象,如:40New Boolean(true),
这个bands 总会被打印(如果我们什么都不输入这个就是默认值),
($F{SALARY}.intValue()>4000?new Boolean(true):new Boolean(false))
上面的代码说明当salary 的值如果大于4000 就输出当前的band 否则就不输出当前的band。
组(Groups)
一个group 有下面几个属性需要我们去定义:
Group name:为这个group 指定一个名称,group 创建完成后会产生两个新
的band : header 和footer band,这两个band 的名称采用group 的名称来定义。
Start on a new column:如果此选项勾选,那么分组只会在报表中的新的column 产生,也就是说在一页中报表分组在一个column 里只会做一次。
Start on a new page:与上面的选项类似,如果该选项勾选,那么分组只会在每一页做一次,也就是说每一页最多只会有一个分组数据。
Reset page number:该选项允许在一个新组开始的时候重设页号。
Print header on each page:如果该选项勾选,那么如果当前页没能显示完组里的所有数据时,到一页显示该数据时会把该组的header 打印出来,否则将不会打印。
Min height to start new page:该选项用来设置当前报表中页面所余下的高度的最小值分组的最小值,默认值是0,如果我们设置为100,表示如果当前页面余下的高度小于100 就不再继续显示分组的数据,而是在下一页显示分组
的数据。
Group expression : 分组时采用的表达式规则,如上图中我们在定义dept这个group 时我们在Group Expression 里输$F{DEPT_ID},表示将该组按员工的DEPT_ID 字段进行分组显示。
Group header band height:新产生的header band 的高度。
Group footer band height:新产生的footer band 的高度。
传递参数(Passage of the parameters)
当我们在应用程序里通过fillReport 方法来生成一个报表的时候,我们会
提供一个包含参数值的Map 一起传递到报表中,包含参数的Map 对象是由报表
引擎直接管理的。在子报表属性窗口的里的“SubReport”标签里的“Parameters
Map E xpression ”属性就是提供给我们的最简单的方法来为子报表设置
parameters 的值,它允许我们定义一个最终可以返回java.util.Map 对象的表
达式,使用这种方法我们可以把从外部应用程序传到父报表里的parameter 对
象,当然这个parameter 的实际值是一个java.util.Map 对象传递给子报表使
用( 比如$P{TestMap} ), 这里我们也可以使用内建的报表
parameters:$P{REPORT_PARAMETES_MAP}把子报表中的java.util.Map 对象传
递到父报表中供使用。如果该属性我们空着不填那么一个不包含任何值的空的
java.util.Map 将会被传到子报表中。这种机制的局限性是parameters 里所对
应的java.util.Map 值是死的、不会变的。为了克服这种局限性jasperreport
允许我们定义parameter 键值对的时候每个对象的值通过一个表达式来创建,
如在图9.2 中的“SubReport Parameter”表中通过添加个参数java.util.Map
来填充子报表。
子報表屬性頁
Parameters:父报表傳參數給子报表。
Subreport returnvalues:从子报表里返回一些值到父报表里。