了解jasperreport ,讓web報表跑得更好
一、為什么是jasperreport
很簡單兩點:
1 免費
2 在大多數開源產品中最能滿足本人/公司的需求.
如果要一句話總結那么就是 "適合就好!" ,其次再想插一句"其實jasperreport可以做得更好,只是缺少大家去發現。"
在erp軟件開發中一套強大易用的報表工具還是相當重要的地位,在這里我只針對一些日常業務報表.
jasperreport + ireport 報表套裝在普通的報表中已做得很不錯:流水賬式的,分組報表都可以輕松實現.在這里提出的是一些相對特別以及少用到的報表設計問題.
當前版本 : jasperreport 1.1.0
ireport : 0.5.2
二、問題與解決
1.操作
初用ireport 設計報表(特別是早期的版本)感覺還是比較原始,相對于birt 類似于在 Dreamweaver中畫table 式的設計還是有點差距.但新版本(0.5.2)中也有不小的改善,增加了很多快速對齊,格式化的工具欄以及快捷操作方式.通過結合這些操作還算是方便了不少.
2.分頁
剛接觸jasper report ,無論是看其官方的example還是自己動手設計報表, html view 總給人很深的印象:"怎么字體那么小,而且實際打印一下,分頁功能并沒真正實現"
經過客戶一輪的抗義,最終還是下定決心去修補一下,
其實jasper report 原理還是挺簡單:
它默認的分頁方式是能過一輪的高度計算,再用兩個<br>就以為了事了.














解決方案:
好在jasperreport還提供了很好的擴展方案.它允許我們自定義分頁方式(就是說在兩頁/table之間能讓我們放自己的代碼),自己定義betweenPagesHtml 就OK了,可以能過CSS定義分頁.在這里,我就直接改它代碼算了.大家可以自己選擇.
net.sf.jasperreports.engine.export.JRHtmlExporter















3. 打印
分頁解決后可以發現當報表預覽時真的能一頁一頁分得很好.卻又發現了一個問題.報表明顯不能滿一張A4張大小(ireport 設計選擇的是A4紙張),疑惑了一際子,其實不能算是BUG.
ireport 報表屬性中明顯(21 * 29.7 CM) 一張A4紙的大小,為什么HTML出來的效果卻明顯小的那么多了.其實這與計算機的分辨率有關
計算機中的分辨率,普遍是72 象素/英寸,而打印機普通是300象素/英寸.
jasperreport 與ireport 默認單位是px,我猜想如果用CM做單位的話可以解決這個問題.但在這里我們的做法是盡量加大報表設計時的寬度與高度.另一個要注意的是記得將所有頁邊距設為0,因為這些設置在打印的時候已在IE/瀏覽器中設定了,不用重復.
4.分欄
以前沒多注意,但剛用ireport新版本時可以發現在報表屬性設計的時候可以設置欄.這下子如果當報表主體部分列數不多時實現分欄顯示,以節省紙張.
5.斑馬線式顯示報表主體
有時我們想讓報表更美化,讓用戶更方便地觀看數據,可以設置兩種色相隔.這種效果在jasperreport 中的example中有demo一下,大家如果想學習可以下載看看.
6.交叉報表
關于jasperreport的交叉報表設計網上還是有不小的討論,而真正實現的不多.我觀察過大多用jasperreport實現都是偽交叉報表.并不是真正實現真正的動態行與列.
其實在jaspert report下載包中還是有個交叉報表的實現example(crosstabs),只不過據我了解,現在ireport還不能實現設計.只能通過手工寫jrxml文件實現.本人小試一下,還是挺不錯的.
三、待研究
通過繼承net.sf.jasperreports.engine.export.JRHtmlExporter ,還是能擴展不小的功能.例如用CSS格式化,可以大大減小代碼量,動態列/可設列寬度大大增強我們的報表功能.
現本人初部實現100%寬度,不再用jasperreport中hardcode列度等等,以下三點還有待時間去跟進:)
1.動態列
2.可設列寬度
3.CSS設計
posted on 2005-11-28 20:35 一凡@ITO 閱讀(13517) 評論(6) 編輯 收藏 所屬分類: Bi report Tools