ireport中文用户手册.doc
《ireport中文用户手册.doc》由会员分享,可在线阅读,更多相关《ireport中文用户手册.doc(171页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录iReport用户手册1iReport用户手册 - 介绍1iReport报表结构1iReport报表元素5iReport字体和样式(Fonts and Styles)6iReport字段,参数,变量12iReport栏和组(Band and group)23iReport子报表(SubReport)30ireport数据源39常规问题解决方案104iReport JasperReports深入讲解110iReport 报表结构完全掌握119iReport 报表元素大全131iReport 中字体编码说明154iReport 字段,参数和变量精解156iReport Bands and gr
2、oups166iReport用户手册iReport用户手册 - 介绍 CubeBI.com 立方开源商业智能 iReport是一个能够创建复杂报表的开源项目。它100%使用Java语言编写。是目前全球最为流行的开源报表设计器。由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。以下是iReport一些比较突出的功能: 拖拽式,所见即所得的报表编辑器。 多样的向导来简化复杂的报表设计任务。 超过30个排版和格式化工具。 报表可转换为PDF HTML EXCEL FLASH CSV RTF TXT OpenOffice Java2D JRViewer等格式。 支持所有有效的数据源。如:J
3、DBC,CVS,Hibernate,JavaBean等 用户自定义数据源。 无限次数的 撤消/重做。 集成脚本(scriptlet)支持。 内置图表支持:超过20种的图表支持。并可扩展。国际化:集成超过15种语言。 报表模板与报表库样式管理。 源文件的备份 文档结构浏览器iReport报表结构 CubeBI.com 立方开源商业智能 在本章中我们将一起来分析一下报表的结构,看一下报表中每一部分的作用是什么,以及在生成报表的时候每一部分将产生什么样的效果。4.1 栏(Bands)报表被垂直分成若干个部分,每一个部分我们叫它为“band”。每一个band都有自己的特性,在报表生成的时候有些会打印一
4、次,有些会打印多次。如下图。图4.1接下来我们就对每一种类型的band分别进行介绍。Title Band:title 段只在整个报表的第一页的最上面部分显示,除了第一页以外,不管报表中共有多少个页面也不会再出现Title band 中的内容。pageHeader Band:顾名思义,pageHeader 段中的内容将会在整个报表中的每一个页面中都会出现,显示在位置在页面的上部,如果是报表的第一页,pageHeader 中的内容将显示在Title Band 下面,除了第一页以外的其他所有页面中。pageHeader 中的内容将显示在页面的最上端。pageFooter Band:显示在所在页面的最
5、下端。Detail Band: 报表内容段,在这个Band 中设计报表中需要重复出现的内容,Detail 段中的内容每页都会出现。columnHeader Band:针对Detail Band 的表头段,一般情况下在这个段中画报表的表头。columnFooter Band:针对Detail Band 的表尾段。Summary Band:表格的合计段,出现在整个报表的最后一页中的Detail band 的后面,一般用来统计报表中某一个或某几个字段的合计值。为了实际演示各个band的生成效果,我们可以在报表中的各个band里添加不同的对象,以测试各个band的作用。从示例数据库的employee表
6、里取数据,在query editor里输入下面的语句:select top 10 * from employee图4.2在报表中的各个band分别放置如下内容:图4.3启动报表,生成的效果如下:图4.4 生成的报表第一页图4.5生成的报表第二页,也是最后一页iReport报表元素 CubeBI.com 立方开源商业智能 在本章中我们将要解释可以在报表中使用的对象及他们的相关属性。我们所说的元素主要是一些图形对象,比如text,rectangle等。在iReport中没有段落,表格或分页的概念,在报表中最基本的对象主要有七个: -Line-Rectangle-Ellipse-Static tex
7、t-Text field-Image-Subreport-Crosstab-Chart通过以上这些组件的组合我们可以做出各种各样复杂的报表样式。iReport提供两种特殊的图形对象:chart和barcode。每一种类型的对象都有一些通用的属性,如高度、宽度、位置、所在的band等。除此之外还有一些针对不同元素的特殊属性。每一个元素都必须在一个band内部,如果一个元素跨了一个以上的band,那么在编译的时候将会抛出元素位置错误的异常。要添加一个元素到报表中,我们可以从主工具栏中选择相应的工具,然后添加到报表区域中即可。图5.1我们可以通过双击对象或右键菜单打开元素的属性设置窗口。图5.2属性
8、窗口由若干个标签页构成,“Common”标签里包含每一个组件都具有的通用属性,其它的标签页是针对不同元素的属性设置。在下面的章节中,我们将对每一个对象的使用做详细的介绍。iReport字体和样式(Fonts and Styles) CubeBI.com 立方开源商业智能 一个style是一个预定义的属性的集合用来控制元素的外观(比如背景色、边框线、字体等)。我们可以为我们的报表定义一个默认的style。要为一个元素应用一个style,我们可以选择该元素并从元素的属性窗口common标签里的style列表选择你需要的style。Fonts是用来描述text的外观特征。此外,你可以定义一个名为“R
9、eport font”的全局字体。6.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:指定一个字体
10、编码名称。如果我们需要将报表导出成PDF格式,将会使用指定的PDF字体,其它属性将会被忽略掉。如果我们使用扩展的TTF(True Type Font),那么扩展的字体文件(以.ttf结尾的文件名)必须放置在classpath当中。图6.1在“Font name”下拉框中,仅显示的是java虚拟机管理的系统默认字体,因此,如果要选择一个扩展的TTF字体在非PDF格式报表中,那么我们首先需要在使用之前在系统中把这些字体安装好。图6.2上面的字体列表中显示是内置的PDF字体集合,如果直接去编辑下拉框里的字体但这些字体在设计时候不可用,如果字体文件在启动的时候找不到,那将会产生一些错误。如果我们选择的
11、字体是一个扩展的TTF格式字体,要保证在导出PDF格式时显示正确,请勾选“PDF Embedded”复选框。如果要导出PDF格式报表选择正确的字体编码至关重要。Encoding指定字体如何被编译。举个例子,如果使用意大利语,要打印正确的重音符(比如:, , a, )我们必须使用CP1252编码格式。iReport在下拉框里有一些预定义的编码格式。当报表导出PDF时包含一些非标准的字符时,要保证所有的fields都有相同的编码格式并且检查从数据库里读出的数据采用的字符集格式。6.2 样式(Styles)我们可以选择主菜单的“Format Styles” 来定义一个style。如下图所示:图6.3
12、点击“New”按钮添加一个新的style。在弹出的窗口中我们可以定义一些属性,如果我们需要某个属性的值,我们可以点击 按钮来实现。图6.4在每个元素属性窗口的“Common”标签里有一个style属性下拉框,如果我们需要为一个元素设置一个style,我们可以在这个下拉框里选择我们定义好的style,这样就可以把一个style应用到一个元素上面啦。图6.5我们可以为一个Style加一个动态的条件,当条件满足的时候采用某个style,否则就采用默认的style。举个例子,还是以doradosample里的hsql数据库里的employee表为例,如果员工的薪水大于3500,我们让薪水以红色加粗的字
13、体显示。打开Query窗口,输入下面的查询SQL:Select * from employee图6.6 新建一个style,在弹出窗口的style conditions里新建一个conditions,在表达式窗口里输入下面的表达式:($FSALARY.intValue()3500?new Boolean(true):new Boolean(false)如下图:图6.7新建的style如下图:图6.8接下来把员工姓名和员工薪水拖到报表当中,并将我们新建的style应用到薪水这个field上,如下图:图6.9启动查看运行效果如下:图6.10iReport字段,参数,变量 CubeBI.com 立方
14、开源商业智能 在ireport中有三种类型的对像可以用来保存数据:Fields/Parameters/Variables.这三种对象可以用在某些地方的Expression中,通过一定的逻辑在报表生成的时候动态的更改某些值。Fields/Parameters/Variables有类型的概念,它们的类型就是一个标准的Java的Object。要使用这三种类型的对象我们必须首先创建它,创建的方法是点击“View”主菜单中,选择其中的子菜单Fields,Variables,Parameters我们可以创建不同的对象。通过这三个子菜单我们可以查看并管理Fields,Variables,Parameters
15、对象。图1.1通过该窗口,我们可以创建,修改,删除这三种类型对象。7.1 字段(Fields)Field在ireport是专门用来组织记录。Field的创建有多种途径可以实现,我们可以根据在ireport中各种类型的数据源来创建我们所需要的Field。在图1.1中的Fields标签页中,我们可以点击new 按钮来创建一个新的Field。图1.2一个Field有两个必填的属性: name、type和一个可选项的description。从ireport1.0.0开始,fields可以是任何Java数据类型。这样当我们使用JavaBean作为数据源时我们可以很方便的从java.lang.Object
16、向报表中的Field的转换工作。在对象的Expression里你可以使用下面的语法来引用一个field:$field name例如如果你想处理com.bstek.test.domain.Person Bean里的username 字段,可以这样去写:(com.bstek.test.domain.Person)$username)用一个SQL query来创建Field在ireport的设计中使用SQL query的方式来创建或记录字段的是使用最广泛的也是最直接最简单的一种方式。做此操作我们需要首先打开ReportQueryDialog窗口(点击主工具栏的 按钮), ReportQueryDia
17、log窗口出现后,我们可以输入合适的SQL检索并创建Fields。图1.3在打开ReportQueryDialog窗口之前请先确认我们已经有一个数据源连接处于激活状态(激活方式请查看相关章节),插入一条查询语句,如:select * form employeeiReport将启动SQL 查询引擎,根据输入的SQL将分析结果用fields的形式展示出来。在下面的窗口中选择你要的fields(可以多选)然后点击OK按钮, fields就被创建出来了。在这个例子当中所有字段有多程类型,一般地说,fields的数据类型是构建在原始SQL 类型基础之上的,如String,Integer用JavaBean
18、生成Fieldsireport的高级特性之一是它的数据源除了可以构建在SQL query基础之上外,还可以使用含有getter和setter方法的JavaBean(或者叫POJO)对象来创建。在这个例子中fields就是POJO类里的属性(或者是属性的属性,即子对象的属性)。选择JavaBean Datasource 标签,通过该窗口你可以指定POJO来创建fields。如下图:图1.4点击“Read attributes”按钮,你可以浏览这个对象,可以看到这个对象的直接属性嵌套的对象(子对象),双击里面的子对象你可以查看子对象的属性。要把一个属性添加到field列表,只需选中需要的属性然后点
19、击“Add field(s)”按钮。如果要把一个field作为一个文本打印,可以直接把一个field拖到report的band里或者在report的band里添加一个textfield然后设置它的expression(把一个field放在expression里)和textfield的类型,如果需要还可以为一个要打印的field定义一个pattern(模式)用来对field内容进行格式化。图1.57.2 参数(Parameters)Parameters通常是用来在打印的时候从程序里传值到报表里.也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL
20、查询的条件),和report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。和使用Fields一样,parameters也需要在创建的时候定义它的数据类型.parameters的数据类型是标准的java的Object。图1.6在ireport中Parameters的机制是允许用户通过应用程序传递参数致报表当中。在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前report中存在的parameter:$Pparameter name 如果应用程序没有为报表中定义的parameter赋值,那么paramet
21、er将会取我们在定义它的时候设置的default value的值。parameters是一个Java Object,所以如果它的类型是Object类型,我们在其default value里写下面的表达式就是错误的:0.123你必须要创建一个Object,如:New Double(0.123)这种写法就是正确的。在查询中使用ParametersParameters可以用来做SQL查询的条件参数的传递.如果你想根据部门编号(dept_id)得到客户的详细信息 (设计的时候我们是不知道这个部门编号的具体值是多少的).此时我们可以这样组织查询语句:select * from employee wher
22、e dept_id=$PdeptId此时SQL查询引擎将会采用PreparedStatement来处理传入的deptId值以此作为查询条件参数。如果你想直接通过parameter 值来作为SQL语句的一部门,那么你可以使用下面的特殊语法:$P!parameter name。这种写法允许你在查询时用parameter的值来替换parameter name。例如,如果我们有一个参数名为MyWhere其值为:where dept_id=D11 ,查询写法如下:Select * from employee $P!MyWhere查询时实际提交的字符串是:Select * from employee wh
23、ere dept_id=D11在程序里使用Parameters在应用程序里如果想把某个值传递到我们的报表中parameters时,我们可以把相关的值放入一个扩展java.util.Map接头类里,然后传入到report里。如下面的代码:.Map hm = new HashMap();.JasperPrint print = JasperFillManager.fillReport(fileName,hm,new JREmptyDataSource();fillReport是一个关键的方法,它允许你通过一个文件名,一个参数集来传递到我们要调用的报表当中。例如通过下面的处理方法我们可以让一个处部的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ireport 中文 用户手册
限制150内