程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JasperReport那些事兒(一)——iReport制作表格

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

編輯:關於JAVA

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

先看看效果。

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。

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)。大功告成。

寫這篇東西花了大半天,有興趣的同志可以下載源代碼看看:http://www.blogjava.net/Files/heis/ireport_table/makeTableUsingIreport.rar

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved