BIRT與JasperReport均未比較常用的java報表工具,本文對比BIRT與JasperReport在數據分析處理、運行模式、報表設計、程序源等功能中的細節差別。
數據處理
BIRT和Jasperreport都是只支持數據展現,不支持報表的數據填報功能,即沒有辦法實現將數據回填到資料庫中這一操作。對於國內企業來說,這算是一個不能容忍的功能缺陷,中國極少不需要數據錄入操作的公司。因為國情需要,所有的國產報表系統工具都支持這一功能。
列印
Jasperreport有批量報表列印功能,但一般需要通過專門的編程實現批量報表列印;BIRT不支持批量報表列印。
BIRT列印方式中僅能對指定頁數進行控制,不支持列印時進行頁面設置、頁邊距調整等。
Jasperreport支持套打,需要一定編碼;BIRT不支持套打。
運行模式
和國內很多報表工具不同,Birt和JasperReport都是採用設計器來設計報表,然後由運行組件來生成報表,其中,Birt的報表只能由設計器來生成,而JasperReport可以獨立地由運行組件來生成報表,功能比較全面。
Birt的運行組件包括了全部需要的包,很占空間(將近100M),JasperReport的運行組件是做小模式的(2M),需要生成哪種格式的報表文件,就把那個格式所依賴的JAR包放入自己程序的lib中;
Birt比JasperReport要繁瑣的多,所要創建的文件夾platform名字是被定死的。Birt運行的關鍵步驟是先通過一段步驟獲得報表引擎,然後通過報表引擎建立不同的task來完成不同的報表操作。而JasperReport採用的是JasperRunManager類,由這個類的可以簡單的實現各種報表生成。
在代碼需求量上,JasperReport的代碼明顯比Birt要少,而中國式報表,如FineReport,所需代碼量比所有的開源報表量都少。
報表設計
就報表設計而言,一般報表設計需要的數據分析元素,Birt和JasperReport都有。相對來說,JasperReport可以直接在報表上畫線和矩形,靈活性更大一點。
Birt和JasperReport的報表都是xml形式,但是JasperReport比Birt多了一個「編譯」的過程,既把報表xml文件編譯為本地保存的.jasper文件(其實是把報表對象實例保存到了硬碟上),生成報表的時候,JasperReport直接載入.jasper文件而不需要再進行XML解析,性能比Birt略優。
到目前為止,Birt只支持從xml格式的報表模板來生成報表,而JasperReport可以脫離報表模板完全由程序在運行過程中通過API來畫線、插入數據、生成報表。因為生成不同格式的報表在顯示上有可能有出入,需要為不同的格式修改報表的某些屬性,JasperReport支持動態修改報表屬性,而Birt只能是為不同的報表格式創建多個報表模板文件。
數據源
Birt和JasperReport都支持從jdbc-connection、csv、xml等格式的數據文件讀取數據。目前Birt有兩種方式獲得數據,一是自己和資料庫建立連接來取得數據,二是從應用伺服器的資料庫連接池中取得連接來檢索數據,但是不管從哪裡取得資料庫連接,Birt都是根據報表文件中定義的sql語句來檢索數據並生成報表,並不支持直接使用由應用程序生成的資料庫結果集。
JasperReport則有更多的實現方式,一是使用應用程序傳遞給過來的資料庫連接來檢索數據,即使用報表文件預定義好的sql語句。二是支持把程序傳入的資料庫結果集來生成報表,結果集的格式可以是對象集合或者對象數組,其中對象可以是資料庫的映射對象也可以是HashMap形式的數據,這樣的話使用hibernate,iBatis等資料庫持久層都沒有問題了。三是針對一些特定的資料庫持久層提供的檢索功能,比如我們可以把hibernate的session對象作為參數,由JasperReport來執行報表文件中預定義的hql語句。但是JasperReport的SQL查詢文本框不支持粘貼操作,也不支持參數化查詢。
在預定義sql語句方面,Birt要比JasperReport方便,Birt支持一個報表文件定義多個sql語句和多個數據源,JasperReport不支持多個sql語句,但他可以通過子報表的方式解決這一問題。
FineReport報表系統——零編碼做報表、多維圖表、多源填報、許可權管理,完美兼容excel。報表免費下載:http://www.finereport.com/tw/