`
Heis
  • 浏览: 112537 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JasperReport那些事儿(一)——iReport制作表格

阅读更多

如果你还不知道jasperreport和ireport,那你可以参考我的上一篇文章,或者谷歌百度一下。好了,废话少说,Let’s start,Go!
      我的环境是iReport3.0+JDK6.0。
      先看看效果。
 
1)    准备数据源,这里使用XML文件(使用UTF8编码)作为数据源。

 1  <? xml version="1.0" encoding="utf-8"  ?>
 2  < NameList >
 3       < Person >
 4           < Name > 强尼 </ Name >
 5           < Gender > </ Gender >
 6           < Age > 56 </ Age >
 7       </ Person >
 8       < Person >
 9           < Name > 阿美 </ Name >
10           < Gender > </ Gender >
11           < Age > 23 </ Age >
12       </ Person >
13       < Person >
14           < Name > 李丽 </ Name >
15           < Gender > </ Gender >
16           < Age > 58 </ Age >
17       </ Person >
18       < Person >
19           < Name > 杰森 </ Name >
20           < Gender > </ Gender >
21           < Age > 32 </ Age >
22       </ Person >
23       < Person >
24           < Name > 刘三 </ Name >
25           < Gender > </ Gender >
26           < Age > 21 </ Age >
27       </ Person >
28  </ NameList >


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




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





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



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

 
7)    菜单data->connections/datasource,新建一个XML  datasouce,目录位置指向之前建立的XML文件。选择Use the report Xpath xpression 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_SOURCE}).dataSource("/NameList /Person")。这一步主要是将数据源传给子报表。
 



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




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

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

        写这篇东西花了大半天,有兴趣的同志可以下载源代码看看。点击下载



1
0
分享到:
评论
3 楼 w156445045 2012-03-14  
博主您好,我的iReport的版本是4.5.1

我添加表格 Table 的时候 字段总是报错

Field not found 
请问这是什么原因啊~
2 楼 flrldeye 2011-12-16  
非常感谢,问题解决了
1 楼 南通ori 2011-04-08  
赞一个,不过现在正好要用类似的,只是要数据库连接,和直接添加已完成报表而不是新建。

相关推荐

Global site tag (gtag.js) - Google Analytics