iReport 4.5 学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iReport 学习笔记
版本:iReport 4.5.0 2012年六月
简介 (3)
1 iReport介绍 (3)
1.1概述 (3)
1.2 运行环境 (4)
1.3下载地址 (4)
2 准备 (4)
2.1 数据库连接方法1 (4)
2.2数据库连接方法2 (6)
3 开始制作表 (8)
3.1通过第一张简单表了解iReport各个部分功能 (8)
3.2 iReport中中文显示问题 (12)
4 iReport中各个窗体介绍 (13)
4.1 左侧边栏介绍 (13)
4.2中间栏 (13)
4.3 组建介绍 (14)
5 iReport表制作 (15)
5.1简单报表 (15)
5.2 子报表 (16)
5.3 Table类型报表 (27)
5.4 iReport中自动换行的设置 (28)
6 iReport中其他 (29)
6.1 Sql语句的编写IN语句 (29)
7 Dorado7中iReport配置 (30)
简介
公司业务需要用到iReport工具进行报表开发。

所以自学了下。

现在把自己学到的东西几下来分享下,因为这个方面的只是在网上很少,很乱。

下面做一个小的总结,主要是自己的理解加上网上前辈的总结。

接触的iReport是从4.1.0开始的,我现在用的是4.5.0的版本制作。

iReport从3.7.5之后版本已经与之前有了很大的不同,所以如果你用的还是4.0以前的版本的话可能制作过程会存在差异。

下面开始……
1 iReport介绍
1.1概述
iReport是为JasperReports设计的强大的,直观的,易于使用的可视化报表设计器采用纯Java开发。

这个工具允许用户可视化编辑包含charts,图片,子报表等的复杂报表。

iReport 还集成了JFreeChart图表制作包。

允许用户可视化地编辑XML JasperDesign文件。

用于打印的数据可以通过多种方式获取包括:JDBC, TableModels, JavaBeans, XML,Hibernate(支持HQL 查询语言), CSV等。

它支持多种输出格式包括:PDF,RTF,XML,XLS,CSV,HTM。

1.2 运行环境
JDK: JAVA 1.5 包括,以上
1.3下载地址
下载地址:/projects/ireport 版本实时更新的,如图1-1:
图1-1
2 准备
2.1 数据库连接方法1
Step1:打开iReport工具,进入主页面如图2-1,点击红色框着的图标。

图2-1
Step2:点击之后出现图2-2,DataSource配置信息窗口,选择JDBC connection 节点,next
图2-2
Step3:填写相应的连接信息,点击Test 测试连接成功,之后保存。

如图2-3
如图2-3
2.2数据库连接方法2
Step1:打开iReport工具后进入首页,点击如图2-4图标即可
图2-4
Step2:点击之后出现图2-5,点击new按钮出现2.1 中图2-2,之后步骤一样。

图2-5
3 开始制作表
3.1通过第一张简单表了解iReport各个部分功能
Step1:进入iReport首页,新建报表有两种方式1.在首页中点击如图3-1
图3-1
2.在主页面中菜单“文件—New”和方法1一样弹出如图3-2窗口,选择需要使用的纸张样式。

图3-2
Step2:之后根据自己习惯操作,选择Open this Template 直接保存报表后写SQL。

选择Launch Report Wizard需要有准备的SQL代码。

本人更倾向于第一种。

点击Open this Template填写报表的名字和存放位置,之后点击下一步,完成。

图3-3
图3-3
Step3:进入首页如图红色框,点击填写报表需用到的SQL代码。

如图3-4和SQL代码窗口Report query 图3-5
图3-4
图3-5
Step4:Report query代码窗口,点击保存,在主页面左面中Report Inspector(后面有介绍)中的Fields中可以看到Sql中查询出来的结果。

图3-6
图3-6
Step5:报表的简单设计,和预览。

根据业务需要设计报表,直接拖动需要的数据字段到相应的位置,然后预览效果。

图3-7
图:3-7
Step6:点击Preview预览,查看图3-8,第一页,3-9
图3-8
图3-9
图3-9【页头和summary的位置】
3.2 iReport中中文显示问题
这个主要说明在设计模板的时候有字体而在预览或者打印的时候没有显示的配置。

步骤:
选中没有所有的字体,点开属性配置。

如图3-10
图3-10
如果要添加字体的话,这个可以上网搜索下如何配置,这里不再说明。

【转帖:】
选中字段->右键->properties->font(双击也可以)
Report font 选择全局的字体(仅限于该报表)
Font name 选择在ireport里面显示的字体
Pdf font name 选择在pdf里面显示的字体
Rotation 选择内容是否旋转(很有用的选项)
PDF Encoding 中文要用UniGB-UCS2-H,外部字体要选Identity-H
4 iReport中各个窗体介绍
4.1 左侧边栏介绍
报表的动态对象变量、参数、字段
●字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。

比如一个ID
的所有值。

$F{ filedsName }
●参数(Parameters):这是你的应用需要提供给报表的入口,比如你希望在报表被解释
的时候提供Where语句的条件值,那么就可以使用参数(Parameters)。

$P{ parameterName }
●变量(Variables):这是报表中一些逻辑运算的表现,比如统计值。

$V{ variablesName }
4.2中间栏
报表被垂直分成若干个部分,每一个部分我们叫它“band”。

每一个band都有自己的特性,在报表生成的时候有些会打印一次,有些会打印多次。

报表的结构大致是几个部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。

●Title:title 段只在整个报表的第一页的最上面部分显示,除了第一页,不管报表中
有多少个页面也不会再出现Title band 中的内容。

就是报表的标题。

●pageHeader:pageHeader 段中的内容将会在整个报表中的每一个页面中都会出现,显
示的位置在页面的上部。

如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中,pageHeader 中的内容将显示在页面的
最上端,即页眉。

报表的一些公共要素,比如页码、创建时间、创建人等信息放置在这里是比较好的选择。

●columnHeader:无可非议的这里是放置列的名称,记住不是列数据。

●Detial:报表内容段,在这个Band 中设计报表中需要重复出现的内容,Detail 段中的
内容每页都会出现。

比如销售记录数据。

●columnFooter:放置列级别的统计计算值或是列的说明。

●pageFooter:显示在所在页面的最下端,即页脚。

放置页级别的统计值或是页的说明。

4.3 组建介绍
图4-2
【转帖:】主要组件会在报表设计中用到
我就介绍几个比较常用的吧,如Static Text、Text Field、Subreport …
Static Text : 字面意思就是静态文本,可以在上面任意的写文本字符等,需要特别注意的是中文不显示的问题。

解决方法:选中某一个带中文的 Static Text或TextField,查看“属性”
1:Font name:属性设置为“宋体”或其他中文字体;
2:Pdf Font name is now…:这个属性也得设置为STSong-Light,我特意试了其他的好几个值结果都是不能正常显示,除了设成该值外。

3:Pdf Encoding:这个属性也得设置为UniGB-UCS2-H (ChineseSimplified),若设置为UniGB-UCS2-V(Chinese Simplified)这个属性则该域将会竖着排列了。

Text Field:文本字段,这个就是从库里读出来的字段啦。

该组件若出现中文问题跟StaticText处理方法一样。

这个组件特别值得一提的属性是Text Field Expression: 文本域表达式,可以写表达式。

我们右键某一个TextField选择Edit Expression
另外还需要提的一个属性是“Blank when null”当选中该属性时则表示若库里没有值为null的时候ireport将会进行设空处理,以至于出来的报表中不会出现null字符串。

Subreport: 子模版,为什么需要它呢?我的理解是当我们有一个比较大的报表的时候,可能就需要分多个模块,为了层次分明一点,每一个模块就可以做成一个个的子模版了。

在你使用该属性的时候,需要最好先建好一个子模版(就是另外一个子报表)。

这个组件需要注意的几个属性分别是Subreport Expression 子报表表达式,
另外一个属性是Parameters 词义是参数,就是这个子模版需要哪些参数?
我认为这3个组件是最重要的组件,就重点的讲了一下,包括需要注意的点,另外ireport 其实还提供了很丰富的组件如Chart、Crosstab、Image、List、Frame等等,就不一一介绍啦,大家可以自己设计一个报表将这些组件都用上一遍就大概明白了,其实很多的属性都是一样的比如Left、Top、Width、Height等基本上都有这些属性,ireport是可视化的可以拖拽这些组件,直到你满意位置,具体的设计还是得看大家自己啦,当然一般报表都是很严格的,客户都会提供模版,所以我们只需要照着模版去画就OK啦。

5 iReport表制作
5.1简单报表
见3开始制作报表,就是简单报表的设计过程。

5.2 子报表
子报表在报表开发中是常见到的一个思路。

例如:批量打印,给你一个批次好,然后打印出该批次下所有物品的信。

很多情况下是根据主表查出的字段值不唯一,然后作为参数查找信息,这时候常用的就是主子表了。

5.2.1 主子表制作
首先需要知道主子表的关系此例为主子表在数据库中为主从表关系,根据主表的Id 作为条件来查找出字表中与主表相关的信息,显示出来。

这里子报表为信息。

Step1:首先要制作出一个子报表。

再设计字表的时候一般需把字表的外边距全部去掉。

如图5-1没有边距的字表。

图5-2为报表属性,显示边距为0
图5-1
图5-2
报表中SQl:select * from fams_fixed_assert_info where fixed_assert_id = $P{fixedAssertId};【主表传递过来的参数】
参数的配置:
在报表的Parameter中右击添加参数,这个参数的属性和名称必须和主表中传递过来的参数一模一样。

如图:5-3子报表中的参数,在主表配置向从表中传递参数的时候需要配置参数名和这个一模一样。

图5-3
Step2:主表的设计
主表的SQL:select fixed_assert_id from fams_fixed_assert_info where batch_serial =$P{batchSerial};【根据这个参数查找出该批次下说有资产信息的ID】
如图设计好没有添加subReport组件的珠宝表 5-4
图5-4
Step3然后在主键面板中拖动subreport组件到detail中的位置【具体位置放在哪个band 中需要根据业务需求而定】步骤如图5-5 到 5-9
图5-5【下一步】图5-6【下一步】
图5-7【下一步】图5-8【完成】
图5-9
Step4:配置参数,鼠标选中添加到主表中的subreport组件,产看属性给参数配值。

图5-11
图5-11【选择配值跳出图5-12】
图5-12【点击modify跳出图5-13】
图5-13【点击小按钮选择值跳出图5-14】
图5-14【双击对应的值,为参数赋值点击apply即可】
图5-15【配值完成】Step 5:preview预览显示。

图5-16
图5-16
注意:在配值主从报表的时候往往在没有数据的时候回不显示数据这样最好在属性中配值一下。

在 when no Date 中不要选择 no page 可以选择blank page
时间格式的配值:图5-17 设置,图5-18 结果
图5-17
图5-18
5.2.2 主表向子表传参
在5.2.1中已经阐述过,主要注意的是主表与从表中的参数名称需要一模一样。

5.2.3 主表接收子表返回参数
在有的时候会遇到主表接收字表返回的参数,也就是从字表向主表中传参,这个一般是在Variables中【一般是自定义的计算】自定义的参数返回给主表显示。

Step 1:首先在主子表中创建两个属性和属性名称一模一样的参数出来。

图5-19【子表中参数,有值】
图5-20【主表中参数,无值】
Step2 根据SubReport来设置,选中主表中SubReport这个组件,查看属性Return Values
图5-21【配置子表的返回值】
图5-22【把定义的参数添加到这里】
Step 3 :预览。

图5-23
图5-23
5.2.4 巧用主子表
巧妙利用主子表主要指多从主子表的利用。

利用场景主要主要shiite一个表单中出现两个以上的数据模块,如一个页面中需要显示三个table表单的数据而且数据是动态生成的。

这个就需要利用到多从报表的设计了。

多从报表的设计主要是band的位置的判断。

例如一张单中有三张报表,在第一字表中的detail中放入数据做为子表放在上级表的column Header中,然后在这个报表中detail
中放入需要的数据。

然后这个含有子报表的报表作为字表放在下个表的column header中,以此类推可以实现多个报表的设计。

详情看: /q326527970/article/details/7049047
中关于SubReport中的介绍
5.3 Table类型报表
在iReport中是有table的控件的,这里写的table类型的表单主要是在不用table
控件的情况下,运用iReport制作出table的样式。

以押金报表为例。

类型如图5-24
图5-24
Step1:设计报表样式布局,然后选中所有添加边框的列,右击选择Padding and Borders 设计自己需要的格式,例如Line width 选择1 选择实线。

就可以啦,当然可以根据需要设计边框上下左右的线的样式。

这样就设计好了类型为table的报表。

图5-25
图5-26
5.4 iReport中自动换行的设置
主要是当你的text中显示的数据过长时候需要让之自动增加高度,换为两行显示。

但是注意的是同一行数据都需要随着其中一条数据的变化而变化。

局限性:不适用于Static Text。

场景:图6-1
图6-1
Step1:分组,将位于同一行显示的字段进行分组。

此例仅一行。

操作:选中位于同一行的字段右击点击Group selected elements进行分组如图6-2
图6-2
Step2:配置这些字段的属性,1.Position Type = Fix Relative to top
2.Stretch Type = Relative to Band Height
3.Blank When Null 选择当数据为空时候显示为空而不是NULL
4.Stretch Width OverFlow 选择自动换行
配置之后的效果如图6-3
图6-3
6 iReport中其他
6.1 Sql语句的编写IN语句
我在sql中使用 select * form table1 where a in ($P{param})。

传入一个字符串"a,b,c " iReport 会认为参数是一个查询条件而不是多个。

正确的写法:
select * form table1 where a in ($P!{param})。

传入参数不能是 "a,b,c ",而要是带上双引号,如 " / "a/ ", / "b/ " , / "c/ " ",不然拼出来的SQL就不对了。

事例传参:前台JS中设计参数qrCodeIds
7 Dorado7中iReport配置
关于Dorado7中使用iReport的配置以及说明请查看BSDN网站:
/pages/viewpage.action?pageId=3964933
Email:*****************。

相关文档
最新文档