ireport使用教程

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

JasperReport那些事儿

如果你还不知道jasperreport和ireport,那你可以参考我的上一篇文章,或者谷歌百度一下。好了,废话少说,Let’s start,Go!

我的环境是iReport3.0+JDK6.0。

先看看效果。

1)准备数据源,这里使用XML文件(使用UTF8编码)作为数据源。

2)打开iReport,新建一个空的模版文件。

3)加入一个静态文本(StaticText),右击属性(Property),编辑字体属性和内容。关于Font Name 属性和PDF Font Name属性需要PMingLiu字体(下载)(将PMingLi u字体放在ireport安装目录的font文件夹下)或者你可以选择其他字体,例如宋体,PDF Font Name 选STSong-Light。

4)接下来就要做表格部分,新建一个子报表(subreport),除了第二步选择No C onnection or datasource,基本上只要点Next就行了。

5)完成上一步后就会跳到子报表NameList_subreport0的视图,其实子报表也是一个独立的报表。但是你现在只能看到一个叫Detail的区域(band)。我们还需要更多的区域来结合完成表格的制作。调出区域管理器(菜单View->Bands),将column header 和column footer的高度(height)设为20.

6)在column header加入三个静态文本(StaticText),字体属性和之前的一样,分别加入内容姓名,性别,年龄。在detail区域加入三个文本(textField),在column fo oter加入一个文本,字体属性和StaticText保持一样。然后设置所有静态文本和文本的边框,如图。现在的textField都是没有数据的,那么怎么填充数据呢?现在我们来看怎么配置数据源和填充数据。

7)菜单data->connections/datasource,新建一个XML datasouce,目录位置指向之前建立的XML文件。选择Use the report Xpathxpression when filling the report.

8)打开NameList模版,菜单data->report query,配置XPATH如图。

9)配置NameList模板的subreport, 編輯屬性Connection/Data Source Expression,輸入((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURC E}).dataSource("/NameList/Person")。这一步主要是将数据源传给子报表。

10)打开NameList_subreport0模板,先配置XPATH,然后右击节点Name,选A dd node as field.同样将Gender和Age节点加入field。点OK。然后你可以看到左边的结构视窗多了三个Field。

11)编辑Table里的文本(textfield),右击选Edit Expression,输入表达式(Fiel d的表达式,$F{Field_Name})。$V{REPORT_COUNT}是jasperreport内建的变量,用于计算detail区域的行数。

12)保存模板,菜单build->Compile,编译两个模板。打开NameList模板,带数据源运行(build->Execute with active connection)。大功告成。

JasperReport那些事儿(二)——从对象到XML数据源。

记得刚学Jasperreport的时候,在谷歌和百度上搜到的大多数入门文章都是教授如何使用数据库来做报表的。对于只采用简单数据集和那些直接面向数据的报表,使用数据库作为数据源是合适的;但是也有很多的报表不是直接面向原始数据的,例如财务报表,都是需要计算和做后续处理;也有一些报表引用的数据粒度小,但是数量多,使用数据库做数据源是不合适的。

XML一直被认为是一种很好的描述结构化数据的语言。

首先XML文件的数据结构非常清晰。可以把报表所需要的数据集成到一个XML文件上,然后再通过在文件内查询,这比每需要一条数据就使用SQL来查询要显得更高效和简单。试想一下,你的同事A告诉你,“报表的数据都在这份XML文件里哦”。而同事B则对你说:”那些数据在某个数据库里,你自己去查吧。“,你更喜欢听到哪一句呢?(当然我的语气上的差别就说明了我的喜好,我老怀疑后者在背向我的那一刻有在奸笑。)

其次,现在对象映射到XML的工具很多。哦?你知道我在暗示什么吗?没错,你可以面向对象,而不用面向丑陋的表格。在上一篇文章中,我给出这样一个数据源。

1

2

3

4 强尼

5

6 56

7

8

9 阿美

10

11 23

12

13

14 李丽

15

16 58

17

18

19 杰森

20

21 32

22

23

24 刘三

25

26 21

27

28

如果你是个典型的面向对象的思考者,应该马上想到一个叫Person的Java类。大概像下面这样。

1 package com.blogjava.heis.jasper.chapter2;

相关文档
最新文档