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

来源:岁月联盟 编辑:zhuzhu 时间:2009-03-18

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

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

   先看看效果。

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

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

1<?xmlversion="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。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  点击查看更多系列文章