Ireport图文教程.docx
- 文档编号:10428545
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:62
- 大小:1.65MB
Ireport图文教程.docx
《Ireport图文教程.docx》由会员分享,可在线阅读,更多相关《Ireport图文教程.docx(62页珍藏版)》请在冰豆网上搜索。
Ireport图文教程
Ireport简介
iReport是一个能够创建复杂报表的开源项目。
使用Java语言编写。
是目前全球最为流行的开源报表设计器。
iReport也是开源组织中的一款免费软件,其主要作用是用来以可视化的方式设计
生成JasperReport所使用的报表格式文件,
1)其输出格式有:
PDF,HTML,CSV。
JAVA2D,EXCEL,纯文本,JRView。
注意:
JRViewer是直接以C/S方式作为报表的输出格式,在JFrame框架下输出。
用它生成的文件有.jrxml和.jasper两种文件。
.jrxml:
是可视化编辑的xml文件;
.jasper:
经编译后生成的类文件,即报表模板文件。
2)它按预定义的XML文档来组织数据,来源多(如:
关系数据库,Java容器对象(collection,arrays)等);
报表的填充过程:
先产生报表设计对象->序列化该对象->存储在磁盘或网络->产生XML文件(表格数据)。
表单的设计过程就是用定义于XML文件中的Java表达式来实现报表的设计。
3)它带数据一致性验证;
4)报表引擎必须先接受数据(通过参数等多种形式)来产生报表,更多的是来自数据源,引擎直接接收用于填充表格的数据源对象,或者通过自身提供的JDBC连接对象来处理数据库的数据;
5)报表最终要产生一个新的对象来进行填充操作,从而产生打印文档对象,这也是存储在磁盘或网络传输介质的序列化对象;
6)内置浏览器能直接查看结果,以PDF,HTML,XML导出;
7)重要的类:
net.sf.jasperreports.engine.design.JasperDesign
其实例是用于报表产生的原始类;
net.sf.jasperreports.engine.design.JasperReport
表现了报表设计对象,是作为报表的编译过程的结果而被实例化,是向报表中填充数据的准备。
其编辑工具iReport在Eclipse3.2下的安装过程
菜单“帮助”->“软件更新”->“查找并安装”->“搜索要安装的新功能部件”--(下一步)-->“新建远程站点”,输入以下内容:
名称:
JasperForge
URL:
http:
//www.jasperforge.org/update
--(确定)-->“下一步”-->直至完成。
以JasperReports1.3.0版本为例,一个JasperReports项目需要如下jar包:
包名 说明
jasperreports-1.3.0.jar JasperReportsAPI
commons-beanutils-1.7.jar JavaBeansUtilityclasses
commons-collections-2.1.jar Collectionsframeworkextensionclasses
commons-digester-1.7.jar classesforprocessingXMLdocuments
commons-logging-1.0.2.jar Loggingclasses
poi-2.0-final-20040126.jar JarkartaPOIAPItogenerateanExcelDocument
itext-1.3.1.jar PDFlibrary
xml-apis.jar XMLparserAPI
创建一个新报表
启动Ireport3.7.2点击文件new
选择合适的模板后接着点击OpenThisTemplete按钮
Reportname:
为你的模板文件起个名字
Location:
模板文件存放位置(一般在项目中自己建立一个文件夹专门存放报表文件)
接着下一步Finash
建立好新的报表文件后看到中间部分编辑区域的7个Band(栏)分别为:
下面分别介绍:
TitleBand:
title段只在整个报表的第一页的最上面部分显示,除了第一页以外,不管报表中共有多少个页面也不会再出现Titleband中的内容。
pageHeaderBand:
顾名思义,pageHeader段中的内容将会在整个报表中的每一个页面中都会出现,显示在位置在页面的上部,如果是报表的第一页,pageHeader中的内容将显示在TitleBand下面,除了第一页以外的其他所有页面中。
pageHeader中的内容将显示在页面的最上端。
pageFooterBand:
显示在所在页面的最下端。
DetailBand:
报表内容段,在这个Band中设计报表中需要重复出现的内容,Detail段中的内容每页都会出现。
columnHeaderBand:
针对DetailBand的表头段,一般情况下在这个段中画报表的表头。
columnFooterBand:
针对DetailBand的表尾段。
SummaryBand:
表格的合计段,出现在整个报表的最后一页中的Detailband的后面,一般用来统计报表中某一个或某几个字段的合计值。
下面我们做一个简单的报表:
使用mysql数据库作为数据源(实际项目中大都是使用JAVABEANS作为数据源)
1.首先要配置报表数据的连接点击菜单栏上的
按钮
New
上面是Ireport支持的数据源类型在这里选用第一个使用jdbc连接数据库
Next>按钮
点击Test按钮测试能否连接成功
点击保存(Save)按钮完成数据源的配置
2.为报表文件设置查询类型点击ReportQuery按钮
填写查询语句
点击Fields节点出现数据表中各字段
3.接下来开始制作报表:
在填充数据前先来介绍一下Ireport的组件:
我们可以很方便的拖拽
介绍常用的几个组件:
Break分割线
Chart图表工具可以选择使用的图标(饼图,折线图,柱状图等)
StaticText静态文本
TextField文本字段
Subreport子报表(下面具体介绍)
4.填充报表数据
在报表中的各个band分别放置如下内容:
启动报表,生成的效果如下:
(点击
按钮)
报表的动态对象变量、参数、字段(表达式)
字段Fields:
是从数据库抽取出来的,在报表中出现的数据库内容。
$F
一般都是从数据源中读取
参数Parameters:
你写的应用需要提供给报表的入口。
$P{参数名}
为report增加参数
(1)
ireport提供了一些内建的parameters,这些parameters对于用户来说是只读的。
内嵌的parameters列表如下:
参数名
说明
REPORT_PARAMETERS_MAP
它是一个java.util.Map类型的对象,可以通过它来传给填充报表去填充报表里所有的parameters,在这个参数里还包含用户定义的parameters.
REPORT_CONNECTION
一个JDBC的Connection参数,报表可以根据传入的JDBCConnection来获到相应的数据
REPORT_DATASOURCE
为报表中的Connection提供一个DataSource。
外部传入的时候类型也要是DataSource类型
REPORT_SCRIPTLET
报表生成时使用的Scriptlet实例,如果没有指定ScriptLet,那么这个parameters将使用net.sf.jasperreports.engine.
JRDefaultScriptlet.
IS_IGNORE_PAGINATION
通过这个参数你可以控制分页功能是打开还是关闭。
默认情况下,分页是打开的。
但是如果导出为HTML或EXCEL时不进行分页处理。
REPORT_LOCALE
它被用来设置报表所处的地区。
如果没有提供地区,那么将采用系统默认的地区。
REPORT_TIME_ZONE
设置报表的时区,如果没提供的话采用系统默认的。
REPORT_RESOURCE_BOUNDLE
为报表指定要加载的资源文件,在国际化一章中介绍了如何使用资源文件来构建报表。
鼠标右键à添加Parameterà
在变量的属性框里设置变量的名字‘sysName’以及类型此处为java.lang.String以及初始值此处我们把UseasaPrompt选中,为了有明显的体验,(在实际项目中参数一般是从外部传进来)
接下来我们使用该参数做个条件查询
鼠标右击报表文件名àEditQueryà
,修改SQL语句,如:
加上wheresub_sys_name=$P{sysName}
注意:
参数用$P{}来封装。
运行项目:
首先提示输入参数值:
如下.
点击OK显示结果:
变量Variables:
报表中一些逻辑运算的表现。
$V
设置变量:
和java中变量一样是用来存储对某些字段计算后的结果,比如sum等
图中是Ireport默认变量可以右键添加变量
设置变量要计算什么类型的结果:
CalculationType:
一个计算类型可以用来计算结果。
当一个预先定义的值是“nothing”时,那它的意思是不做任何计算。
ireport会根据指定的计算类型和从数据源中获取的每一条记录计算出结果,然后去更改variables的值。
做一个变量的计算意为着去执行一个表达式,如果计算类型为nothing,那么ireport将会根据variableexpression为variable赋值。
计算类型列举如下:
类型
说明
Nothing
不做任何计算
Count
对记录集数量进行循环累加(计算有多少条记录),这和sum不一样,sum的计算是针对数字的,会对数字进行累加操作。
DistinctCount
也是对计算有多少条记录的累加操作,只是在累加过程中会忽略已经出现的记录(比如某个字段的值已经出现后就不会再记录)
Sum
添加每一次表达式(这里的表达式只能是数字类型)迭代的结果到变量中
Average
它用算术的方法来计算表达式累加结果的平均值
Lowest
返回表达式最小值
Highest
返回表达式最大值
StandardDeviation
根据表达式所有值返回标准方差
Variance
返回表达式接收到的值的变化
System
不做任何计算并且表达式也是没有价值的,在这样的用例中,报表引擎仅仅保存内存中variable的最后的值。
设置重置类型
ResetType:
重置类型。
表示一个变量在什么时候做重置操作。
reset类型如下:
类型名称
说明
None
任何时候都不做重置操作
Report
在报表创建的时候Variable才会对表达式进行初始化
Page
Variable的初始化在每一页都做一次reset操作
Column
Variable的初始化在每一列都做一次reset操作(这里的Column指的是report里的page的column,每个报表的column可以通过报表的Editàreportproperties窗口进行修改)
Group
Variable的初始化在每一个组都做一次reset操作
ResetGroup:
如果groupresettype被勾选,这里就要选择group名称(关于group可以参考后面的章节)。
Increment:
它指定当一个variable值被评估或当你想要这个组采用类似于subtotals或averages来计算,increment类型可以参考下面的表。
IncrementGroup:
如果这个group的incrementtype被勾选它将指定这个组决定variable的increment。
CustomIncrementerFactoryClass:
指定一个实现了JRIncrementerFactory接口的java类名称,通常用来定义一些诸如sum之类的非数字类型的操作。
VariableExpression:
它是一个java的expression,用来标识variable每一次迭代的值。
InitialValueExpression:
它是一个为variable初始化时采用的expression.
内置的variables
和parameters一样,ireport提供了一些内置的variables(这些由报表引擎直接管理),这些变量是只读的,不能被用户修改,如下表所示:
Variable名称
说明
PAGE_NUMBER
它包含当前页的页。
COLUMN_NUMBER
它包含当前的列数。
REPORT_COUNT
当前的记录数目
PAGE_COUNT
当前的页号
COLUMN_COUNT
当前的列号
在
设置完属性见下图
其中VariableExpression中的表达式的最终结果要与VariableClass中的变量类型一致
把变量加入到报表中:
运行后结果如下:
每个变量的定义格式如下:
$V{itemCount}
Groups(分组)
选中报表右击AddReportGroup
输入报表名字选择分组的表达式下一步完成
修改queryString(即查询语句)为:
select*frominss_systemorderbysub_sys_name;
在GroupHeader区域填写要分组显示的字段如上图所示
运行显示结果为:
一个group有下面几个属性需要我们去定义:
Groupname:
为这个group指定一个名称,group创建完成后会产生两个新的band:
header和footerband,这两个band的名称采用group的名称来定义。
Startonanewcolumn:
如果此选项勾选,那么分组只会在报表中的新的column产生,也就是说在一页中报表分组在一个column里只会做一次。
Startonanewpage:
与上面的选项类似,如果该选项勾选,那么分组只会在每一页做一次,也就是说每一页最多只会有一个分组数据。
Resetpagenumber:
该选项允许在一个新组开始的时候重设页号。
Printheaderoneachpage:
如果该选项勾选,那么如果当前页没能显示完组里的所有数据时,到一页显示该数据时会把该组的header打印出来,否则将不会打印。
Minheighttostartnewpage:
该选项用来设置当前报表中页面所余下的高度的最小值分组的最小值,默认值是0,如果我们设置为100,表示如果当前页面余下的高度小于100就不再继续显示分组的数据,而是在下一页显示分组的数据。
Groupexpression:
分组时采用的表达式规则,如上图中我们在定义dept这个group时我们在GroupExpression里输入了$F{DEPT_ID},表示将该组按员工的DEPT_ID字段进行分组显示。
Groupheaderbandheight:
新产生的headerband的高度。
Groupfooterbandheight:
新产生的footerband的高度。
report对象和它们的属性。
基本上是JasperReports的快速参考。
1、Expressions表达式
表达式是JasperReports的核心特征。
它是一个重要的机制,允许操纵和显示报告数据,执行各种计算,自定义报告的外观和报告对象的可视性。
1)一个典型的表达式
$F{LastName}+""+$F{LastName}
一个JasperReports的表达式是以Java表达式为基础的,再加上一些附加的语法,它允许引用参数、变量和字段等。
比如说要引用一个名叫DATA的参数时,语法应为$P{PARAM_NAME}。
对变量和字段来说,其引用语法分别为$V{VAR_NAME}和$F{FIELD_NAME}。
注意:
在JasperReports的groovy脚本语言中,也同样可以用$F,$P,$V引用参数、变量和字段。
2)表达式的语法
(1)$F{FIELD} 引用名为FIELD的字段;
(2)$V{VAR} 引用名为VAR的变量;
(3)$P{PARAM} 引用名为PARAM的参数;
(4)$P!
{PARAM}引用名为PARAM的参数;这个特殊的语法仅能用于report的查询中。
它允许插入参数的内容到查询字符串中。
例如,它能被用于创建一个带通过参数来指定WHERE条件的动态查询。
$R{keyName} 在resourcebundle中检索带keyName关键字的字符串。
注意:
表达式是用Java或Groovy写成的,这意外着可以用Java强大的功能,如调用方法,允许构建无限复杂的表达式。
还要注意,表达式的结果总是一个对象。
3)更多的表达式
(1)newInteger(Math.max($V{Price1},$V{Price2}))
(2)(newSimpleDateFormat("dd/MM/yyyy")).format($F{OrderDate})
(3)$F{SpecialOffer}.booleanValue()?
$F{SpecialPrice}:
$F{Price}
2、内建的函数
JasperReports提供了一套内建的函数用于report表达式中。
这些函数尽管是内建的工具,还是可以在普通操作中执行它。
注意:
目前这套函数很有限,在未来会得到扩展。
1)例:
使用内建函数
msg("Totalcostis{0}",$F{TOTAL})
msg("Matched{0}productsoutof{1}",$F{MATCHED},$P{TOTAL})
2)内建的函数
(1)Stringstr(Stringkey);
从和report相联系的resourcebundle中得到给出的key的一个字符串。
这个函数的功能和使用$R{key}语法等价。
(2)Stringmsg(Stringpattern,Objectarg0);
建立一个带给定的pattern和给定参数来指定其格式的java.util.MessageFormat对象。
(3)Stringmsg(Stringpattern,Objectarg0,Objectarg1);
同上;
(4)Stringmsg(Stringpattern,Objectarg0,Objectarg1,Objectarg2);
同上。
3、Report报告
Report是表现为报告模板的根对象。
在报告执行期间,report模板和数据组合成最终的文档。
报告的属性有:
(1)ReportName报告名;
(2)Units报告的单位;有:
像素Pixels,毫米Millimeters,厘米Centimeters和英寸Inches。
(3)Language报告表达式使用的语言;目前有Java和Groovy两种。
(4)Orientation页的方向;其可能值为水平Protrait和纵向Landscape。
(5)PageWidth以报告单位指定的页宽;
(6)PageHeight以报告单位指定的页高;
(7)PageSize报告的尺寸,即为pagewidth和pageheight。
(8)LeftMargin以报告单位指定的左边页边距;
(9)RightMargin以报告单位指定的右边页边距;
(10)TopMargin以报告单位指定的顶部页边距;
(11)BottomMargin以报告单位指定的底部页边距;
(12)ColumnCount报告中的列数;
(13)ColumnSpacing以报告单位指定的列边距;
(14)ColumnWidth以报告单位指定的列宽;
(15)PrintOrder填充列的顺序;有垂直Vertical和水平Horizontal两种。
(16)FloatColumnFooter浮动列脚,指出是否在列底部或明细表最后或组脚进行打印;
(17)DefaultFont缺省字体;
(18)DefaultStyle缺省风格;
(19)ScriptletClass脚本类,它必须是JRAbstractScriptlet类的子类。
如果省略,将创建一个JRDefaultScriptlet的实例。
(20)SummaryNewPage新页的概要;
(21)TitleNewPage新页的标题;
(22)WhenNoDataPrint无数据时的打印,有三个选择:
NoPages表示0页;BlankPage空白页;AllSectionsNoDetail除了detailsection,其它的都打印。
(23)Query查询,用来检索数据到报告中。
(24)QueryLanguage查询语言,有五个值:
SQL用于JDBC数据源的查询语言;HBMHibernate用于Hibernate数据源的查询语言;XPath用于XML数据源的查询语言;EJBQL用于支持Java持久层(Persistence)API的数据源的查询语言;MDX用于Mondrian数据源的查询语言。
(25)Importsjava输入的列表,例如:
java.util.*和java.text.SimpleDateFormat格式。
用于简化report的表达式。
(26)ResourceBundle为report提供了本地的系列字符串。
在报告中,本地字符串能用$R{key}引用。
(27)WhenResourceMissingPrint允许自定义引擎在resourcebundle中处理丢失的resource。
有4种选择:
Null丢失的resource不打印;Empty丢失的resource为空;Key用$R{key}指定的key来打印;Error用错误来中断报告的执行。
4、Styles风格
一个report可以定义大量的风格。
一旦定义了,它们能和report对象联系起来,为了给各种可视视图提供基本的配置。
report允许用模块化的方式来定义模块的风格。
风格有相关联的条件风格。
条件风格允许当其表达式为真时改变风格。
1)风格的属性有:
(1)Name风格名;
(2)ParentStyle父风格;
(3)Foreground前景色;
(4)B
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ireport 图文 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)