使用JFreeReport生成報表

文章摘要

JFreeReport用於生成報表。JFreeReport的數據繼承自Swing組件的TableModel接口,使用基於XML的報表格式定義文件對報表進行格式化。JFreeReport生成的報表可以分頁預覽、打印或者保存爲多種格式的文件如pdf、Excel、html等。作者在本文中詳細的介紹瞭如何定義報表格式定義文件、如何使用JFreeReport生成/預覽報表和將報表轉爲其它各種格式。

關鍵詞

JFreeReport  報表生成  預覽

報表生成一直是企業信息化過程中重要的一環,也是目前比較難於實現的一環,今天作者給大家介紹一種新的報表生成組件――JFreeReport。JFreeReport是JFreeReport.Org基於LGPL授權協議提供的一組java包,用於生成各類報表,JFreeReport的數據繼承自Swing組件的TableModel接口,使用基於XML的報表格式定義文件對報表進行格式化。JFreeReport生成的報表可以分頁預覽、打印,而且支持導出爲多種格式的文件如pdf、Excel、CSV、html等。更重要的是,JFreeReport不僅支持基於C/S結構的系統,而且支持基於B/S結構的系統中的在線報表顯示。更詳細的關於JFreeReport的介紹請大家訪問JFreeReport的官方網站JFree.org

1  環境準備

1.1  JFreeReport組件

請大家到http://prdownloads.sourceforge.net/jfreereport/jfreereport-0.8.4_7.zip?download下載JFreeReport組件,下載的是一個ZIP文件,然後將ZIP文件解壓縮到c:/jfreereport(後面的章節中將使用%jfreereport_home%表示這個目錄)目錄下。

1.2  JFreeReport擴展組件

請大家到http://www.jfree.org/jfreereport/jfreereport-ext-0.8.4_7.zip下載JFreeReport擴展組件,他用於支持JFreeReport組件生成的報表的在線顯示。請大載後解壓縮到c:/jfreereport-ext目錄下(後面的章節中將使用%jfreereport_ext_home%表示這個目錄)

1.3  Ant工具

Apache公司提供的一個基於JAVA的自動化腳本引擎,請大家到http://ant.apache.org/下載ant的可執行文件,關於如何使用ant請大家查看ant的幫助文檔或者http://ant.apache.org/網站上的在線幫助文檔。示例中主要是用ant來負責編譯java代碼。

1.4  作者提供的代碼

爲了運行本文中作者提到的例子和相關資源文件,請大家下載作者提供的vivianjDemo.zip文件和中文轉換工具gb2unicode.jar。然後解壓縮到%jfreereport_home%/vivianjDemo(後面的章節中將使用%demo _home%表示這個目錄)目錄下。

2  JFreeReport生成報表的基本步驟

我們首先演示一個簡單的例子,說明使用JFreeReport生成報表的一些必要的步驟。

2.1  實例說明

在這個例子中,我們將循環生成100條數據放入TableModel中,然後使用JFreeReport組件提供的預覽功能在屏幕上顯示生成的報表。

[注] 爲了簡化,這裏僅僅是逐條顯示數據,不作任何修飾和統計工作,所以也不使用報表格式定義文件。

2.2  代碼編制

整個演示實例(HelloWorld.java)的代碼和相關注釋如下,如果你執行了1.3中規定的步驟,你可以在%demo _home%/src/org/vivianj/jfreereport/看到這個文件。


2.3  運行例子

如果你執行了1.3中規定的步驟,你可以進入命令行界面,然後進入%demo_home%目錄下,修改setenv.cmd中的相關設置,執行serenv.cmd設置環境變量。執行java org.vivianj.jfreereport.HelloWorld查看運行結果。下面這個圖片是作者執行後結果的屏幕截圖:

大家可以看到,JFreeReport已經自動幫我們實現了分頁。上面這個圖片顯示的是第一頁的數據,你可以通過工具欄中的查看其它頁面中的內容。

2.4  基本步驟解釋

使用JFreeReport生成報表通常需要以下三個基本步驟:

  1. 生成可通過TableModel接口訪問的數據,如本例中的createData方法完成的功能
  2. 生成一個JFreeReport實例,他定義了我們如何格式化顯示數據,如本例中的createReportDefinition方法完成的功能
  3. 將數據和JFreeReport實例連接起來,並且將該JFreeReport實例傳給PreviewDialog的一個實例顯示給用戶

3  使用JFreeReport生成複雜報表

3.1  報表定義文件

報表定義文件是JFreeReport生成複雜報表的重要文件,他就是一個XML文檔,主要描述如何使用指定的格式生成複雜的報表,同時使用報表定義文件也可以在報表格式需要修改時只需要更新該報表定義文件,而不需要修改應用代碼。

3.1.1  報表定義文件分類

JFreeReport中使用了兩種基於XML的報表定義文件來保存報表定義信息:簡單格式和擴展格式.很明顯,簡單格式不能夠完全的描述JFreeReport支持的全部報表定義信息,但是他更易於上手使用。而擴展格式則能夠對JFreeReport的報表定義提供完整的支持,但是擴展格式太詳細了,不太容易使用。

關於這兩種報表定義格式文件所支持的標籤內容以及如何編寫這兩種格式的報表定義文件請大家參考%jfreereport_home%下的jfreereport-0.8.3-A4.pdf中的相關部分,該文件附錄中還包括了這兩種格式的報表定義文件的DTD文檔供大家參考.當然大家也JFreeReport的例子中提供了多種形式的報表定義文件,基本上涵蓋了常用的報表格式定義,大家可以參考這些例子編寫自己的報表定義文件,。

3.2  代碼編制

這個例子和2.2中的代碼基本一致,只是報表定義內容不再由java編碼實現,而是由報表定義文件提供,所以調用方面稍微有點不同,詳細的代碼如下,請大家注意其中加粗顯示的部分:


4  中文亂碼問題

大家在參看報表定義文件的時候會發現,裏面的報表頭定義中有一些顯示內容,如果你直接將他修改成中文,顯示在報表上就會亂碼,這是因爲這些報表定義文件都是XML文檔,他的encoding默認設置是ISO-8859-1,所以出現了中文亂碼的問題,解決辦法有兩個:

1.最簡單的方法就是將encoding的設置修改爲GB2312

2.還有一個方法就是不修改encoding的設置,而是將這些中文內容使用他們的unicode碼來代替。

[注] 作者提供了一個GUI的界面提供這種轉化功能,你只需要輸入中文就可以獲得對應的unicode碼,請大家下載作者提供的gb2unicode.jar,設置好java運行環境,然後執行java -jar gb2unicode.jar就可以了。

5  總結

報表問題是企業信息化中比較關注的一個焦點,也比較難於實現客戶化,作者在本文中給大家介紹了一個新的報表生成包-JfreeReport,他可以根據XML文檔中定義的報表格式,生成符合客戶要求的報表。文章中給出了2個簡單的例子,演示瞭如何使用JFreeReport生成報表的詳細步驟,希望能夠幫助大家熟悉JFreeReport的工作方式。同時文章中給出了使用JFreeReport過程中可能遇到的中文問題的解決辦法。

其實JFreeReport還支持在JSP、Servlet中顯示報表,只是還需要用到他的擴展組件,作者這裏沒有給出例子,大家可以參考下載的JFreeReport的擴展組件中的例子。

參考資料

JFreeReport 在線幫助文檔 http://www.jfree.org/jfreereport/index.html

JFreeReport 的JavaDoc http://www.jfree.org/jfreereport/javadoc/index.html

發佈了115 篇原創文章 · 獲贊 2 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章