IReport报表制作概述.docx

上传人:小飞机 文档编号:4885503 上传时间:2023-05-21 格式:DOCX 页数:28 大小:921.32KB
返回 下载 相关 举报
IReport报表制作概述.docx_第1页
第1页 / 共28页
IReport报表制作概述.docx_第2页
第2页 / 共28页
IReport报表制作概述.docx_第3页
第3页 / 共28页
IReport报表制作概述.docx_第4页
第4页 / 共28页
IReport报表制作概述.docx_第5页
第5页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《IReport报表制作概述.docx》由会员分享,可在线阅读,更多相关《IReport报表制作概述.docx(28页珍藏版)》请在三一办公上搜索。

1、IReport 介绍什么是iReport?iReport是一个能够创建复杂报表的开源项目,并且它能调用JasperReports库应用于任 何一种java应用程序。本身是分布式的且由符合GNU通用公共许可的百分之百纯java编写。 由于它丰富的图形界面,你能够很快的创建出任何一种你想要的报表。必要条件:iReport需要Sun Java 2 SDK 1.4以上版本;为了能编译jasper文件就必须安装完整的 java2(JDK),不光是(JRE)这个运行环境。如果你还想编译iReport源代码,你还要安装Jakarta Ant version 1.6 以上版本。硬件方面,类似于java的环境,

2、iReport也占很多的RAM,所以它也需要至少256Mb的 内存和至少20Mb的磁盘空间。报表结构这章我们将分析报表的构成,来观察一下它由那几部分构成,当用数据打印时这 几部分是如何运转的。Bands一个报表依靠“type ”页来定义说明。它被分成不同水平的一份被叫做bands。 当报表加入数据去打印时,这些部分被印刷很多次依照他们自身的属性(依照报 表创建者设计的规则)。举个例子,page header被重复的打印在每页的开始部 分,这样的话,每个band都会重复的打印每一单一的记录。这个“type”页被分成9个预先确定的bands作为新组被加进去。事实上,iReport 控制每一个头条(

3、Group header)和一个摘要条(Group footer)为每一个组。图4.1一个带总是和页的宽度一样(左右的空白除外)然而它的高度,即使已经被设计 好,但可能还会依据被包含在内的元素的实际来打印;它能够自由的延长靠近页 底。这种特色的出现在bands包含一个subreports或者text field时纵向的内容。通常 情况下,bands的高度被用户指定一个minimal height”。不是所有的bands能依 照内容被这个外力改变,特别是:Column Footer,Page Footer和Last Page Footer. 所有的band高度的总和(除了background)总

4、是小于或等于页的top和bottome之 间的最小高度。Title这是首先看到的band。它被创建仅仅一次,可能被打印在每一分开的页。耍 点小聪明,你能利用这个模拟一个无效的subreports (随后我将看看如何做)。 关于尺度的确认,它是不可能躲过去的,在报表页的高度设计期间。As regards the admitted dimensions, it is not possible to exceed,during design time, the report page height (包含top和bottome标记之间)。如果title被 打印在几张单独的页面上,这个band的高度不

5、用被包括在整个band的高度之内 的,一般低与page的高度。Page header这个band允许你设计一个page的header。它的高度在设计阶段被定义,通常 不会改变在创建报表的过程中(除非有垂直插入相当大的成分,例如这个 textfields包含很长的文本和subreports)。页面的header出现在整个打印页的相同 位置在设计阶段期间。Title和Summary bands不包括page header在打印一个单独 的页时。Column header这个band在每一个详细的列开始时被打印。这c olumn的概念一会儿再解释。 通常的,包含标签的tabular报表的列的名字被插

6、入在这里。Group header一个报表能容纳零个到多个group bands,它允许收藏详细的记录在不动 groupso有group header,自然要有group footer(他们能能独立的展现和取消)。 不同的属性被联合在一个group。他们确定他们的行为功过查看graphic pointo 它是可能的影响一个新的页的group header或者一个newcolumn,打印这个band在 整个页的下面,如果这个bands超出了一个单独的页(以一个组的级别作为一个 page header)。它是可能的去修改被请求的高度并打印它:如果它是超过其他的 高度,这个group将被打印在一个新

7、的page (特别要注意它的值由于太长,在打 印时会无限的循环),等等。接下来我们将详细讨论groups oDetailDetail band将每个通过datasources读到记录响应的传给打印机。很可能,大 多数的元素都被放在这里。Group footer这个band表示一个group的结束。通常它包含的区域显示小计或者分开图解 元素,作为一条线,等等。Column footer这个band的出现表示每一个column的结束。它的尺寸是不能被调整的(即使它包 含一个相当大的元素,像subreports或者文本域)。Page footer这是页脚。它和page header同时出现在每页。同

8、column footer一样,他是不 足够大的。Last Page footer如果你想使最后一页的footer与其他的页的footers不一样,这时可能就要用 到这个band。如果这个band的高度是0,他将被完全的忽视,其他确定结构的普 通页也能适用在最后一页。它首次出现在JasperReports 的0.6.2版本。Summary在其他的地方这个组名被叫做report footer。它允许你在report的最后插入你 想要的任何内容关于总结等。BackgroundBand第一次出现在JasperReport0.4.6版本时。它由于许多用户的坚持不懈的 要求能够创建水印和similar

9、effects而引入(整个页面的结构).它可以具有最大的 高度以至于和页面高度一样。报表属性(1)报表的名字是第一个属性。这个名字是本地命名,它和源文件的名字是 相互独立的,它仅仅被JasperReports library调用(例如:命名一个报表编译后的 java文件)。(2)页面的尺寸大概是报表最重要的属性。iReport和JasperReports使用的最 小量度单位是像素。(像素大小是75点每英寸,每英寸的点数)。然而,我们经 常使用的报表的量度单位更为平常,像厘米,英寸或毫米。下表列出了量度标准 和像素大小。由于尺寸管理基于像素,所以当我们用不同的量度看同一数据会发 生很大改动。(注

10、:每30像素为1CM)Page typeDimensions in pixel (像素)LETTER612 x792NOTE540 x720LEGAL612 x1008A02380x3368A11684x2380A21190 x 1684A3842 x 1190A4595 x842A5421 x595A6297x421A210 x297A8148 x210105 x148A1074 x 105B02836x4008B12004x2836B21418 x2004B31002 x 1418B4709 x 1002B5501 x709ARCH_E2592 x3456ARCH_D1728 x2592A

11、RCH_C1296 x 1728ARCH_B864x1296ARCH_A648 x864FLSA612x936FLSE612x936HALFLETTER396x612_11X17792 x 1224LEDGER1224x792表4.1通过修改高度和宽度,你就可以创建任意大小的报表。(3) 报表页的定位有landscape和portrait选项,Portrait代表纵向报表,Landscape 代表横向报表。(4) 页面的空白尺寸依赖于page Margin选项卡的四个输入值来确定。(5) 一个报表页被几条平行线分开为几部分:bands。column和记录集是没有 关系的,只和detail ba

12、nd有关系。意思就是说一条记录用十个fields和一个表的话, 不需要十列。然而,这些元素可以用table实现恰当的放置。十列将导致一个很长 的记录列(非常狭窄的横条)被打印。下面的例子将告诉你怎样设置值为一个简 单的列报表在A4纸上。字段数的值是1,它的宽度和整个页面一样,除了空白。列之间的空间没有意义,所以它的值是0。(注:设计脊背、照片卡片等报表时需要)当“字段数“输入2。iReport将自动的计算列的宽度依照页的空白和宽度。 如果你想在两列之间插入空白,那就为“spacing”填写一个值。所有的空白,列的宽度和每列之间的空白,加起来要小于页的宽度。如果 不检验这种情形的话可能导致错误产

13、生。(6)脚本是一个java类,它的方法执行在报表生成期间,通过触发一个特殊的事件, 在scriptlet选项卡,可以指定一个外部的脚本(java类)或激活iReport的内部脚本 支持。如果不想使用脚本,那就设置下拉菜单的值为:Dont use scriptlet class.或 者在输入区域填写你所要使用的类的名字。在more.选项卡可以对打印进行设置。Page Margin 字段数 | Scriptlet class More. . . j ilSnESSjEHss r 在新的一页有表尾r Floating column footer I Ignore paginati on IEP表顺

14、序:Vertical |如果没有数据时:|nT pages |Title on a new pa选项:Title指定为一个新页的选项,打印在每页的开始,在title之后页面将发生大 的变化。图4.12和4.13展示报表的结果,图4.11显示报表。This is a titleCOGNOME1F(COGNOME1pO.GNOME2|$FCOONOME2M-e阡N 屹DATANAS CITA$F DATANAS CITATEL1FTEL1|new DateOPage H + $VPAGE_NUMBER + of +图444Title被打印总是一样的,而且在每页的顶部。 图4.12显示使用缺省设置打

15、印的结果:图4.13显示打印的结果如果“title on a new page选项设置为true。像你看到那样, 没有一行其他的band被打印在title页,甚至没Wpage header或page footer。然而这 页仍然计算这页的总数。Summary on a new page 选项:这个选项完全和先前的选项一样,只是summary band被打印在最后一页。现在, 如果你选择了这项,那新页将包含summary band。Floating column footer 选项:这个选项允许你加强column footer band的打印,直接在最后detail band (或group f

16、ooter )后显示而不不在column后显示。当你想用报表元素创建表格时使用这个 选项。(详细请看 JasperReports tables.jrxml)打印顺序:Print order用来决定如何组织打印多列数据。缺省的print order一是v ertical, 它是垂直的打印记录直到页末开始打印新的一列。Horizontal print order prints以横向打印记录当一行占据页宽后开始打印另 一行。图 4.14 和 4.15:Vertical print orderCCWANVNFuAvdtalB岫心 E括GrtJtnraTfw BjQiChbduiAnn TrmtowLl

17、jSearnwtndciTIm) Cracks &9nArrkMifDAnxnJTIw HemLl DtRTW dfaoodflhcvdlllqa iRtKliwnnto的 Be EmmL* mnedn cTAmiTranfre HtpwiiwiCMtosLiugrwH! BdtEtiu*Tnuf& HiMKf Gmnw!VnfWjesiWLihnenrrii Mrk1lgn(|WcEKnm 加0LfTSN SlKipvWft tA fiflcfflUsChevobsrkirwMf$Pwh? R&shJMlWIWwnicwWMCor#ClBp-wsr OinewrtrtMrtHwkkMCcrw

18、cio MnwoKtwumflPMUwrtonlW Hs* S帅anflrcp由ConsoMiM HoMinosNtmv5w?hVVh4 Ckww MrfcgisDHWiirwMmdfl mLK1A Iffth 5WhMKMDuiWd# wn&rCtaWoridDehwigswiClUbes5Pms spcmMsssMtiimt S产芝玷尸夕=巴固 WoisJbl 7gHorizontaf print ordercpmawymameCOMPWWWMEASfBite Fuata4alAnd ThjHM EnTpafedadiH yAnlbrw likrnno Tiiqunra fRinuF De

19、 ktoEBflwnagM日tnatokw 日 Blur S EMiJurtHanBUla CcmthIhi penpamda 宁Elon BfqpBmtom-Dotar Mflilofn-Cftctvs CanniiE- par 4*ivniCflAocDmwbni kloctaainuihcp-SMHfClH-aCWCfj Mmocct*2uvr-aCxisdfllBdHcthngsiwmidumdcj KuhradhanbU Doljkmm 颂DummdnisnnwECdhmkloiEltntHanddFISSAFiHxkip IntixFem*Fij65 gewnandwFflk gG

20、eOHipcaeno daGaurmfl LflnrtMwwlGfMfl l*Mr Fooa MflUfl!Cwplft5ft?wHungry CWAis irgIsMTrngKnifliGi E*wtqw GwwnLILA &jpefm#Y*feL cira rtoMimceLa nwiw*i wgWneLozy*5tounirv 对eL础Stop N神LgtfgFB稣!WMtMwajtfM AtaWWl RmrtlAgiwfl DewMpfflWtWFi GwunewlMr* fWseaefwari W*ti 5WcflTvSMhGcswAflnfco LM4 UM SCM WorfdPf

21、lgS KselffitanwniiPih SPara sp*eswffltfwb 5.图 4.14图 4.15这两个图清晰的显示这个两个选项的概念。如你看到的,每个名字按字母的顺序 打印。图4.14显示了纵向的打印(第一列打印完接着打印第二列),图4.15显示 了横向的打印(打印完所有的行显示出整个列)无数据打印(如果没有数据时):当提供一个空的数据打印时(或者sql查询没有返回记录)一个空文件被创建(或返回是一个零字节长度的流)。这个缺省的行为能被修改通过指定其他的, 在没有数据时。(指when no data)。表4.2概述了可能的值和意义。OptionDescriptionNoPage

22、s缺省值,最后的结果为空。BlankPage返回一个空白页。AllSectionsNoDetails返回整个页的组成,出了 detail band表4.2i18n:il8n选项卡用来设置片段的参数。Resource Bundle Base nameResource Bundle base name是一个参数名,当你想使报表国际化时。Resource Bundle包含用在报表中的标签,句子,表达式翻译文本以指定的语言。这个语 言符合一个特殊的文件。base name表示文件名,能帮助你找到这个文件用正确翻译。为了用精确的语言来重建文件 名,一些language/country首位字母大写(e.g

23、._it_IT, for Italian-Italy)和 .properties扩 展名作为前缀。XML源文件的编码设置:保存源文件的缺省编码格式是UTF-8.然而,如果你想用一些你需要的XML 编码格式,你就需要指定正确的charset(UTF-8)。其他常用的可以选择编码格 式列表(“ISO-8859-1”广泛应用于欧洲).IReport制作报表一、启动iReport后,点击菜单”档案”-“开启新档”(见图1),弹 出窗 口“Report properties。图1二、在窗口“Report properties”中可定义报表的名称、尺寸、定位 及报表边界值等属性(见图2)。“定位”下拉列表

24、中包含两个选项 “ Portrait ” 和 “ Landscape ”,其中 Portrait 代表纵向报 表,Landscape代表横向报表),下面以制作”归档文件目录”为 例子来介绍如何制作报表。图2三、定义报表名称及定位等属性后,点击“OK”按钮系统弹出报表设 计的主窗体。在窗体的左下方点击右键,弹出菜单“栏的属性(,见 图3*图3四、选择该菜单,在弹出窗体中设置各个栏的高度(见图4B设置 方法如下:选中某个栏后输入高度值,点击“Apply ”按钮。对不 需要显示的栏设置其高度值为“0”即可,注意:档案的报表最常用 的栏目为:columnHeader、detail、columnFoot

25、er,高度值参 数是数字30代表1CM。如:ColumnHeader的高度设置为 150,detail的高度设置为45,其它的全部清为“0”,设置完成后关 闭该窗口。图4五、在上方选取”静态字段”工具(丁图标),再在”columnHeader”栏中画出来(见图5),以同样的方法增加其它所有静态的文字。columnHeader栏里面的图表、文字一页只会显示一次,Detail栏中的会根据条件循环显示,直到页面不够画才换一页显示。图5六、右键单击画出的静态字段框选”属性”,在弹出的对话框中(见图6 )设置其它属性:Font选项卡中设置字体的相关属性。(1 )在Font Name选字体;(2) Siz

26、e选字体大小;(3 ) PDF Font Name设置或选择相关的字段,注意如果在Font Name选的不是宋体,而是其它字体时,需要通过复 制粘贴功能把相应的字体替换为下表中相应的字体,字体对 照表如下:字体名称字体名字宋体STSong-Light方正舒体FZSTK.TTF方正姚体FZYTK.TTF仿宋体simfang.ttf黑体simhei.ttf华文彩云STCAIYUN.TTF华文细黑STFANGSO.TTF华文新魏STXINWEI.TTF华文行楷STXINGKA.TTF华文中宋STZHONGS.TTF楷体simkai.ttf隶书SIMLI.TTF宋体-方正超大字符集SURSONG.TT

27、F幼圆SIMYOU.TTF(4) Line Spacing中设置行间距;(5) Align和Vertical Align分别代表静态框中的文字的水平对齐 和纵向对齐;(6) Rotation中设置文字的显示方向;(7) 复选框 “PDF Embedded” 勾上,PDF Coding 选UniGB-UCS2-H (Chinese Simplified),如果字体选择不是宋体时需要选择 Identity-H (Unicode with horizontalwriting);(8)Static Text中可以更改静态文字(双击框也可以更改);(9 ) Border中是设置该属性的边框。图6七、在主

28、窗体的“ Library”中设置“ Field”和变量(见图7)。右键点 “Field”选“添加”-“Field”,在对话框中输入Field的Name(名字) 和Description(描述一路径值)。Name(名字)的值可以为任意字 符,Description的值为系统中某字段的名称或者XML文件中 的路径。统计报表中Description的值为某个字段在XML文件 中的路径,在其它类型报表中Description的值为档案系统中某 字段的名称,除了数据库字段外,还必须增加rows字段,并field Description设置报表所需打印的行数。图7八、双击Library”中的Fields”

29、会看到刚才添加的Field”,左键按住”件号”拖到表格中,Field就会在框中了,右键可设置,Filed-框的各种属性(和静态字段框一样的),继续增加其他Field并拖到 表格中,调整好位置和宽度。痘亓zU U平工L-elG曲本亦 -F F F FEs s F T F F B I u s F ifor者sWE号任Idro件责QQQQQQQQQQQ限期 期数注题管号 日页备问保盒p-iablVIcaE 日曰曰回lqF age ITiJirib erTotal PagesPage X o YTotalCm_r ent D atPercentage:归档文件目彖M: $时鹿保管期限:汀保管期限众号,

30、SF 庶件号责任者文 号鬼名H 期页数备注康件 号$F 责任 者$F 文号 |篱 忡同坤朝$ 数$F备注九、主窗体菜单“Data”中的“连接/资料来源”是设置数据源的(见图9),点击“连接/资料来源”后系统弹出“Connections/Datasources” 对话框(见图 10)。图9十、在“Connections/Datasources”对话框中点”new”,选”XML filedata source”,如下图:十一、单击“next”按钮,输K,name”(名字)、选中”Use the reportXpath expression when filling the report”、点 “B

31、rowse” 选择 xml文件数据源,注:关于XML文件需要从系统的定义档案模 版,选择中相应模版的结构,在“报表”页面,增加报表页面里 有个下载样例数据。选完后,可以点下方的”Test”测试是否通 过。(见图11)图11十二、 在主窗体中选择“Data” - “报表查询”,系统弹出“Report Query”对话框,在“Report Query”对话框中 “Query language” 设置为“ Xpath ”,输入XPath路径(测试数据中为 /data/descendant:Package/Description)。(如图 14)/data/de s cendant: : Packag

32、e/Descriptionj隔Report queryCopy to Clipboard|7 Automatic&lly Retrieve FieldsFilter Expression.图14十三、在主窗体中,点击数据源下拉列表,从中选择数据源。(如图15)十四、编译并执行报表。报表的执行包括无数据执行和有数据执行。(如图15)图15附注:报表设计一些技巧1、报表设计器属性的数字,30代表1cm打印条件设置2、new Boolean(!$F(题名).equals(null),是指当题名字段不为空 时打印3、new Boolean($F题名.length() 117),是指当题名字段的长 度大

33、于117时打印4、new Boolean($VREPORT_COUNT.intValue() % 11 = 0), 是指报表的行数为11时出现,一般用于报表底部粗线的打印 条件5、$F起止日期.substring(0,4),是指截取起止日期的前四位用截 取函数时,最好加上条件,即new Boolean($F起止日 期.length() 4),否则如果起止日期为空时,报表就无法正常 打印了,如果想从第五位开始取4位的话,$F(起止日 期.substring(4,8)6、new Boolean(!$F(案卷题名.equals(null) & $F(案卷题 名.split( ; ).length=5),是指题名内容里有四个“ ”号;7、$F案卷题名.split( ; )2,是指出题名的第二段8、如报表需要按什么分组打印,可增加的一个字段group,并设置原卷号_2;属类号_1,是指按原卷号与属类号分组打印。9、如果报表是复合报表,取案卷库字段用_1,取卷内库字段_2 10、

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号