最近在想《JasperReport那些事兒》系列的寫作方向的問題,是要先寫Jasper的原理和基礎方面,還是寫怎麼制作報表實例。如果你想我寫一些你感興趣的部分,可以在文章後面加評論告訴我。這周先寫一篇制作報表實例的文章吧。
看到一篇總結報表圖例的文章。總結的相當不錯,如果你不知道什麼是標簽式報表,可以看看。
1.先上效果圖
2.數據源還是沿用NameList XML數據源,關於怎麼配置數據源可以看這裡。
<?xml version="1.0" encoding="utf-8" ?>
<NameList>
<Person>
<Name>強尼</Name>
<Gender>男</Gender>
<Age>56</Age>
</Person>
<Person>
<Name>阿美</Name>
<Gender>女</Gender>
<Age>23</Age>
</Person>
<Person>
<Name>李麗</Name>
<Gender>女</Gender>
<Age>58</Age>
</Person>
<Person>
<Name>傑森</Name>
<Gender>男</Gender>
<Age>32</Age>
</Person>
<Person>
<Name>劉三</Name>
<Gender>男</Gender>
<Age>21</Age>
</Person>
</NameList>
3.制作報表的思路
在制作標簽報表的時候,我們先來理清一下思路。可以發現,其實標簽式報表的每個小標簽內的內容類型都是一樣的,這樣可以認為報表是由多個標簽組成的。這樣就可以分離出主體報表和子報表的概念,這與Jasperreport裡的subreport(子報表)概念是一樣的。這樣就可以大概抽象出一個標簽式報表的模型了,在主體報表上使用兩個subreport元素指向同一個標簽報表。
那為什麼要使用兩個subreport元素?我們先來看我們期待輸出的標簽模型的順序。
但是在Jasperreport裡,報表的渲染是從上到下的。所以我們期待的順序是先渲染1號標簽,然後渲染2號標簽,這是從左到右的渲染,在Jasperreport裡面是做不到的。但是我們可以采用同時渲染1號和2號標簽,這就需要兩個subreport元素。
4.具體步驟(關於子報表的制作,可以參考我的第一篇文章)
a)建立一個主模板,加入兩個subreport。
b)建立一個子模板(標簽模板)。
c)配置subreport的XPATH。
左邊的subreport的Datasource配置
右邊的subreport的Datasource配置
報表模板下載:http://www.blogjava.net/Files/heis/%E5%9B%9B-%E5%88%B6%E4%BD%9C%E6%A0%87%E7%AD%BE%E5%BC%8F%E6%8A%A5%E8%A1%A8/Chapter4.zip