收藏 分享(赏)

iReport中文详细教程.pdf

上传人:HR专家 文档编号:6298077 上传时间:2019-04-05 格式:PDF 页数:258 大小:9.98MB
下载 相关 举报
iReport中文详细教程.pdf_第1页
第1页 / 共258页
iReport中文详细教程.pdf_第2页
第2页 / 共258页
iReport中文详细教程.pdf_第3页
第3页 / 共258页
iReport中文详细教程.pdf_第4页
第4页 / 共258页
iReport中文详细教程.pdf_第5页
第5页 / 共258页
点击查看更多>>
资源描述

1、iReport一 、 介 绍iReport是一个能够创建复杂报表的开源项目 , 它 10%使用 Jav语言编写 , 是目前全球最为流行的开源报表设计器之一。 由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。 以下是 iReport一些比较突出的功能:拖拽式 ,所见即所得的报表编辑器;多样的向导来简化复杂的报表设计任务;超过 30个排版和格式化工具;报表可转换为 PDFHTMLEXCELFLASHCSVRTFTXOpenOficeJav2DJRViewr等格式;支持所有有效的数据源。如 :JDBC,VS,Hibernate,JavBean等;用户自定义数据源;无限次数的 撤消 /重

2、做;集成脚本( scriptlet)支持;内置图表支持:超过 20种的图表支持。并可扩展;国际化:集成超过 15种语言;报表模板与报表库样式管理;源文件的备份;文档结构浏览器。二 、 开 始在本章中我们将介绍 iReport运行时所需要的环境 、 如何下载 iReport以及如何在我们的系统中安装使用 。2.1、运行环境、运行环境、运行环境、运行环境(Requiremnts)iReport运行时需要 sunjav2SDK1.5及以上版本,为了能编译我们的报表文件我们需要完整的安装 JDK。2.、下载、下载、下载、下载(Download)iReport官方网址: htp:/ iReport.ex

3、或者 iReport.bat来运行程序。注:在本文中 iReport的版本是 3.0。三 、 报 表 结 构在本章中我们将分析一下报表的结构,看一下报表中每一部分的作用是什么,以及在生成报表的时候每一部分将产生什么样的效果。栏栏栏栏(Bands)报表被垂直分成若干个部分 , 每一个部分我们叫它 “ band” 。 每一个 band都有自己的特性 , 在报表生成的时候有些会打印一次,有些会打印多次。如下图。接下来我们就对每一种类型的 band分别进行介绍。TitleBand: tile段只在整个报表的第一页的最上面部分显示 , 除了第一页 , 不管报表中有多少个页面也不会再出现 Titleban

4、d中的内容。就是报表的标题。pageH aderH H H Band: pageHader段中的内容将会在整个报表中的每一个页面中都会出现 , 显示的位置在页面的上部 。 如果是报表的第一页 , pageHader中的内容将显示在 TitleBand下面 , 除了第一页以外的其他所有页面中, pageHader中的内容将显示在页面的最上端,即页眉。pageFoterBand: 显示在所在页面的最下端,即页脚。DetailBand: 报表内容段 , 在这个 Band中设计报表中需要重复出现的内容 , Detail段中的内容每页都会出现。columnH eaderH H H Band: 针对 De

5、tailBand的表头段,一般情况下在这个段中画报表的表头。columnFoterBand: 针对 DetailBand的表尾段。SumaryBand: 表格的合计段,出现在整个报表的最后一页中的 Detailband的后面,一般用来统计报表中某一个或某几个字段的合计值。lastPageFoter: 内容将会出现在报表的最后一页的最后部分。为了实际演示各个 band的生成效果 , 我们可以在报表中的各个 band里添加不同的对象 , 以测试各个 band的作用。 步骤:第一步:新建文档,报表名称命名为: MyFirstReport,然后单击 “ OK” 。第二步:设置 JDBC连接参数单击 “

6、 Date连接 /资料来源 ” ,出现如下界面:然后单击 “ New” ,出现如下界面:选择 “ DatbaseJDBCconection” 项,单击 “ Next” ,设置好参数 , 单击 “ Test” , 如果测试成功单击 “ Save” 保存 , 如果测试没有成功 , 请检查一下以上步骤。第三步:单击 Dat报表查询。在 queryeditor里输入下面的语句:selct*fromtb_employe,然后单击 “ OK”第四步:单击 “ 不会变动的文字 ” 按钮,添加各个 Band内容。在报表中的各个 band分别放置如下内容:第五步:将要显示的字段拖到 “ detail” 栏内第六

7、步:单击 “ 执行报表 ” 查看结果:启动报表,生成的效果如下:最后一页:四 、 报 表 元 素 在本章中我们将介绍可以在报表中使用的对象及他们的相关属性。 我们所说的元素主要是一些图形对象,比如 text, rectangle等。在 iReport中没有段落、表格或分页的概念,在报表中最基本的对象主要有七个: -Line(线段 )-Rectangle(矩形 )-Elipse(椭圆形 )-Staictext(不会变动的文字 )-Textfield(文字栏位 )-Image(图像 )-Subreport(子报表 )-Crostab()-Chart通过以上这些组件的组合我们可以做出各种各样复杂的报

8、表样式。 iReport提供两种特殊的图形对象:chart和 barcode。每一种类型的对象都有一些通用的属性 , 如高度 、 宽度 、 位置 、 所在的 band等 。 除此之外还有一些针对不同元素的特殊属性。 每一个元素都必须在一个 band内部,如果一个元素跨了一个以上的 band,那么在编译的时候将会抛出元素位置错误的异常。要添加一个元素到报表中,我们可以从主工具栏中选择相应的工具,然后添加到报表区域中即可。我们可以通过双击对象或右键菜单打开元素的属性设置窗口。属性窗口由若干个标签页构成, “ Comon” 标签里包含每一个组件都具有的通用属性,其它的标签页是针对不同元素的属性设置。

9、在下面的章节中,我们将对每一个对象的使用做详细的介绍。五 、 字 体 和 样 式 一个 style是一个预定义的属性的集合,用来控制元素的外观(比如背景色、边框线、字体等)。我们可以为我们的报表定义一个默认的 style。要为一个元素应用一个 style, 我们可以选择该元素并从元素的属性窗口 comon标签里的 style列表选择你需要的 style。Fonts是用来描述 text的外观特征。5.1、字体、字体、字体、字体(Font)通常定义一个字体,我们需要做下面几件事情: -Fontname(字体名称 )-Fontdimension(字体大小 )-Atribute(属性,诸如 bold-

10、faced,italics,underlined,bared)如果我们需要导出 PDF格式的报表,需要为字体添加下面的信息:PDFontName: PDF字体名称(预先定义 PDF字体或一个在 claspath里的 TIF文件的名称)。PDFEmbeded: 当使用一个外部的 TF类别的字体文件生成报表时是否把它包含在 PDF文件里的一个标志 。PDFEncoding:指定一个字体编码名称。单击 “ 格式化 报表字形 ” 可以创建自定义的字体。如果我们需要将报表导出成 PDF格式,将会使用指定的 PDF字体,其它属性将会被忽略掉。5.2、样式、样式、样式、样式(Styles)我们可以选择主菜单

11、的 “ FormatStyles” 来定义一个 style。如下图所示:单击 “ 格式化 Styles” 可以创建自定义的样式。点击 “ New” 按钮添加一个新的 style。 在弹出的窗口中我们可以定义一些属性 , 如果我们需要某个属性的值,我们可以点击 按钮来实现。在每个元素属性窗口的 “ Comon” 标签里有一个 style属性下拉框,如果我们需要为一个元素设置一 个style,我们可以在这个下拉框里选择我们定义好的 style,这样就可以把一个 style应用到一个元素上面了。我们可以为一个 Style加一个动态的条件,当条件满足的时候采用某个 style,否则就采用默认的 sty

12、le。举个例子 , 还是以数据库里的 employe表为例 , 如果员工的工龄大于 3时 , 我们让工龄以红色加粗的字体显示 。打开 Query窗口,输入下面的查询 SQL:Selct*fromtb_employe新建一个 style,在弹出窗口的 styleconditons里新建一个 conditons,在表达式窗口里输入下面的表达式: ($Femploye.workingYear.intValue()2?newBolean(true):newBolean(false)如下图:新建的 style如下图:接下来把员工姓名和工龄到报表当中,并将我们新建的 style应用到薪水这个 field上

13、,如下图:启动查看运行效果如下:六 、 字 段 、 参 数 、 变 量 在 ireport中有三种类型的对像可以用来保存数据 :Fields/Parmetrs/Variables.这三种对象可以用在某些地方 的 Expresion中 ,通过一定的逻辑在报表生成的时候动态的更改某些值 。 Fields/Parmetrs/Variables有类型的概念 , 它们的类型就是一个标准的 Jav的 Object。 要使用这三种类型的对象我们必须首先创建它 ,创建的方法是点击 “ View” 主菜单中,选择其中的子菜单 Fields,Variables,Parmetrs我们可以创建不同的对象 。通过这三个

14、子菜单我们可以查看并管理 Fields,Variables,Parmetrs对象。会出现如下界面:通过该窗口,我们可以创建,修改,删除这三种类型对象。6.1、字段、字段、字段、字段(Fields)Field在 ireport是专门用来组织记录 。 Field的创建有多种途径可以实现 , 我们可以根据在 ireport中各种类型的数据源来创建我们所需要的 Field。6.1.、 在 Fields标 签 页 中 , 我 们 可 以 点 击 new按 钮 来 创 建一 个 新 的 Field。一个 Field有两个必填的属性 : name、 type和一个可选项的 description。 从 ir

15、eport1.0开始 , fields可以是任何 Jav数据类型。这样当我们使用 JavBean作为数据源时我们可以很方便的从 jav.lang.Object向报表中的 Field的转换工作。在对象的 Expresion里你可以使用下面的语法来引用一个 field:$Ffieldname例如,如果你想处理 com.bstek.test.domain.PersonBean里的 username字段,可以这样去写:(com.bstek.test.domain.Person)$username)6.1.2、 用 一 个 SQ LQ Q Q query来 创 建 Field在 ireport的设计中,

16、使用 SQLquery的方式来创建或记录字段的是使用最广泛的也是最直接最简单的一种方式。做此操作我们需要首先打开 ReportQueryDialog窗口 (点击主工具栏的 按钮 ),ReportQueryDialog窗口出现后,我们可以输入合适的 SQL检索并创建 Fields。在 打开 ReportQueryDialog窗 口之 前请 先确 认我 们已 经有 一个 数据 源连 接处 于激 活状 态( 激活 方式 请查 看相关章节) ,插入一条查询语句,如: selct*formemployeiReport将启动 SQL查询引擎 , 根据输入的 SQL将分析结果用 fields的形式展示出来

17、。 在下面的窗口中选择你要的 fields(可以多选 )然后点击 OK按钮, fields就被创建出来了。在这个例子当中所有字段有多种类型,一般地说, fields的数据类型是构建在原始 SQL类型基础之上的 ,如 String,Integr6.1.3、 用 JavBean生 成 Fieldsireport的高级特性之一是它的数据源除了可以构建在 SQLquery基础之上外,还可以使用含有 geter和seter方法的 JavBean(或者叫 POJ)对象来创建。在这个例子中 fields就是 POJ类里的属性(或者是属性的属性,即子对象的属性)。 第一步:定义一个简单的 Bean:packa

18、gecom.asinfo.cm.odel;publiclasProductBeanprivateStringproductName;publicStringetProductName()returnproductName;publicvoidsetProductName(StringproductName)this.productName=productName;第二步 : 要在 iReport中使用 JavBean作为数据源 , 首先要定义好 Claspath, 以使 iReport能够找到我们定义的 Bean,使用菜单 “ Options” -“ Claspath” 定义 Claspath

19、,定义的路径为编译后的 .clas文件所在路径,例如,我定义的 Claspath为 “ C:DocumentsandSetingswzworkspacecmrightinfoWebRotWEB-INFclases” 。第三步 : 在菜单 “ Dat” -“ Conections/Datsources” 菜单中 , 添加数据源 , 将数据源类型设为 “ JavBeanssetdatsource” ,设定的数据源属性如下图所示:第四步:然后到菜单 “ Dat” -“ ReportQuery” 中定义需要用到的 Bean属性,在 “ Clasname” 中输入自定 义Bean的名称,本例中为 “ l

20、d.test.ireport.ProductBean” ,然后点击 “ Readatributes” 按钮,获取 Bean属性,点击 “ AdSelctedField(s)” 添加要用的属性,如下图所示:要把一个属性添加到 field列表 ,只需选中需要的属性然后点击 “ Adfield(s)” 按钮。6.2、参数、参数、参数、参数(Parmetrs)Parmetrs通常是用来在打印的时候从程序里传值到报表里。也就是说 parmetrs通常的是起参数传递的作用 。 他们可以被用在一些特定的场合 (比如应用中 SQL查询的条件 ),如 report中任何一个需要从外部传入的变量等 (如一个 Im

21、age对象所包括的 char或报表 tile的字符串 )。和使用 Fields一样 ,parmetrs也需要在创建的时候定义它的数据类型 。 parmetrs的数据类型是标准 的jav的 Object。在 ireport中 , Parmetrs的机制是允许用户通过应用程序传递参数致报表当中 。 在 jaspereort中的某个对象中的 expresion可以通过下面的语法来访问一个当前 ireport中存在的 parmetr:$Pparmetrname。如果应用程序没有为报表中定义的 parmetr赋值,那么 parmetr将会取我们在定义它的时候设置 的defaultvalue的值 。 pa

22、rmetrs是一个 JavObject,所以如果它的类型是 Object类型 , 我们在其 defaultvalue里写下面的表达式就是错误的 :0.123你必须要创建一个 Object,如 :NewDouble(0.123)这种写法就是正确的。6.2.1、 在 查 询 中 使 用 ParmetrsParmetrs可以用来做 SQL查询的条件参数的传递。如果你想根据部门编号 (dept_id)得到客户的详细信息 (设计的时候我们是不知道这个部门编号的具体值是多少的 ).此时我们可以这样组织查询语句 :selct*fromemployewherdept_id=$PdeptId此时 SQL查询引擎

23、将会采用 PreparedStaemnt来处理传入的 deptId值以此作为查询条件参数。如果你想直接通过 parmetr值来作为 SQL语句的一部分 ,那么你可以使用下面的特殊语法 :$P!parmetrname。这种写法允许你在查询时用 parmetr的值来替换 parmetrname。例如 ,如果我们有一个参数名为 MyWher其值为 :wherdept_id=D1,查询写法如下 :Selct*fromemploye$P!MyWher查询时实际提交的字符串是 :Selct*fromemployewherdept_id=D16.2.、 在 程 序 里 使 用 Parmetrs在应用程序里,

24、如果想把某个值传递到我们的报表中 parmetrs时,我们可以把相关的值放入一个扩 展jav.util.Map接口类里,然后传入到 ireport里。如下面的代码 :.Maphm=newHashMap();.JasperPintprint=JasperFilManger.filReport(fileName,hm,newJREmptyDatSource();filReport是一个关键的方法 ,它允许你通过一个文件名 ,一个参数集来传递到我们要调用的报表当中 。 例-如通过下面的处理方法我们可以让一个处部的传入值作为我们报表的 tile。下面的是一个例子: a).声明一个 parmetr.这个

25、 parmetr是 jav.lang.String类型,名字为: name_report:b).将这个 parmetr拖到 page中的 tileband.修改上面的程序代码如下:HashMaphm=newHashMap();hm.put(“ name_report” ,” reportitle” );.JasperPintprint=JasperFilManger.filReport(fileName,hm,newJREmptyDatSource();运行时效果如下:一般情况下 , 我们不需要为报表中的每一个 parmetrs传递一个值 , 除非某一个 parmetr一定要从外部程序传入时我

26、们才需为一个 parmetr设置一个值 。 如果一个 parmetr外部门程序没有为其赋值那么 ireport将使用 DefaultValueExpresion来对一个 parmetr进行初始化,如果连 DefaultValueExpresion没有设置那么它的值就是 nul。事实上,对于一个 parmetrs我们不仅仅可以传递一个 String,Integr,Bolean等 jav中小的对象 , 同时我们还可以利用 parmetrs来传递一些足够大足够复杂的对象 ,比如一个图像( jav.awt.Image) ,或者通过一个 parmetrs来为一个为子报表提供的 datsource连接等

27、。 在用 Map类型传递参数时我们要注意传递的参数要与 report里的 parmetrs类型保持一致,否则会抛出 ClasCastException。ireport内嵌的 Parmetrs:ireport提供了一些内建的 parmetrs,这些 parmetrs对于用户来说是只读的。内嵌的 parmetrs列表如下: 参数名 说明REPORT_PARMETRS_MAP 它是一个 jav.util.Map类型的对象,可以通过它来传给填充报表去填充报表里所有的 parmetrs,在这个参数里还包含用户定义的 parmetrs.REPORT_CONECTION 一个 JDBC的 Conection

28、参数,报表可以根据传入的 JDBConection来获到相应的数据REPORT_DATSOURCE 为报表中的 Conection提供一个 DatSource。外部传入的时候类型也要是 DatSource类型REPORT_SCRIPTLET 报表生成时使用的 Scriptlet实例,如果没有指定 ScriptLet,那么这个 parmetrs将使用 net.sf.jaspereports.engine.JRDefaultScriptlet.IS_IGNORE_PAGINATION 通过这个参数你可以控制分页功能是打开还是关闭。默认情况下,分页 是打开的。但是如果导出为 HTML或 EXCEL时

29、不进行分页处理。REPORT_LOCALE 它被用来设置报表所处的地区。如果没有提供地区,那么将采用系统默 认的地区。REPORT_IME_ZONE 设置报表的时区,如果没提供的话采用系统默认的。REPORT_RESOURCE_BOUNDLE为报表指定要加载的资源文件,在国际化一章中介绍了如何使用资源文 件来构建报表。6.3、变量、变量、变量、变量(Varibles)Variables是用来存储对某些字段计算后的结果,比如 sum等。和 fields,parmetrs一样, Variables也是有数据类型的。你必须为一个 Variable实例声明一个 jav类型。上图显示了如何创建一个新的

30、Variable。看一下每个字段的意思:Variablename:variable的名称,我们可以在表达式中通过下面的方法来引用一个 Variable:$VvariablenameVariableClasType:variable也可以是任意一个 Jav类型,在下拉框里你可以看到大多数常用的类型,如 jav.lang.String等。CalculationType:一个计算类型可以用来计算结果。当一个预先定义的值是 “ nothing” 时,那它的意思是不做任何计算。 ireport会根据指定的计算类型和从数据源中获取的每一条记录计算出结果,然后去更 改variables的值。做一个变量的计算意为着去执行一个表达式,如果计算类型为 nothing,那么 ireport将会根据 variablexpresion为 variable赋值。计算类型列举如下:类型 说明Nothing 不做任何计算Count 对记录集数量进行循环累加 (计算有多少条记录 ),这和 sum不一样, sum的计算是针对数字的,会对数字进行累加操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报