Sung in Blog

                     一些技術文章 & 一些生活雜碎

          WebSite ConnecTionS

          西北工業大學 Offer收割機
          Java開源大全 Matrix - 與 Java 共舞
          Java World Kingnet國家網絡醫院

          常用鏈接

          隨筆檔案

          文章分類

          積分與排名

          • 積分 - 255950
          • 排名 - 221

          最新評論

          閱讀排行榜

          評論排行榜

          我是在一個星期以前接觸 iReport 和 Jasperreport 的,下載最初它們并沒有吸引我的興趣(或信任),主要是他們的版本的問題(我一直不敢用版本都不到1.0的工具軟件,目前它們的版本: iReport0.2.2, Jasperreport0.5.0),不過聽說有人在用他們,于是就仔細看了一下(因為在 java 應用程序的 web 打印方面我一直都是采用瀏覽器打印,非常痛苦,所以寧可信其有不可信其無,呵呵……)

          一個星期下來,我針對項目中關于報表的一些需求點進行了嘗試,發現他們都可以解決,真實大快人心,于是今天把他們推薦給各位。其實我們做報表用的只是 Jasperreport, iReport 是一個 Jasperreport 的可視化開發工具(不要看它的界面有些簡陋,我們要的操作他都可以幫我們輕松搞定。),當然 iReport 還有其他的用處,不過這里不做闡述。目前幾乎還沒有中文的介紹他們整合開發的文章,盡管如此我也不準備非常詳細的介紹它們,在這里我僅將我的一些經驗寫出來,不乏有些地方淺嘗輒止,如果想細致的研究它們還請閱讀它們配套的英文文檔。Jasperreport 的配套文檔非常詳細,該文檔是收費的,不過網上有流傳的電子版本,本人有幸得到一份,如果你需要可以到本人站點(http://plateau.sicool.com)獲得,在此感謝 Jasperreport 的為開源世界做出的貢獻。相反 iReport 的文檔不多,也許作者認為其足夠簡單,我也是經過無數的探索才有些開發的經驗。

          好了,讓我們進入上述兩者整合開發報表的歷程……

          1. 首先你要得到它們最新的版本,你可以到下邊的地址下載

          iRport: http://ireport.sourceforge.net
          Jasperreport: http://jasperreports.sourceforge.net

          他們的配置也很簡單:iReport 解壓縮以后編輯目錄下的 iReport.bat 文件即可,如下

          @echo off

          set JAVA_HOME=C:\jdk14
          set ANT_HOME=d:\ant
          set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\

          rem %ANT_HOME%\bin\ant javadocs
          %ANT_HOME%\bin\ant iReport

          是不是很簡單,你只要設置相應的一些路經就可以,這里是采用 ant 來運行,當然如果你沒有安裝 ant 也不想安裝它,那么也可以,不過這里我買個官子,你們自己可以到解壓縮以后的目錄中找到相應的運行方法。呵呵,安裝 ant 吧! Jasperreport 不需要任何配置,你只需將下載以后的 jar 包放到 classpath 下即可。呵呵,說來簡單,可是如果沒有 iReport 來替我們干“臟活”,那么做報表的工作將是怎樣的痛苦~!

          2. Jasperreport是如何工作的?

          這里我就往簡單里說了。首先要先有個 xml 文件,然后編譯成 jasper 文件(以 .jasper 結尾),我們真正要使用的是編譯以后的 .jasper 文件,這很像我們熟悉的 .jsp 文件,其實我們調用的是其編譯以后的 servlet。


          (圖片來自 http://ireport.sourceforge.net/cap3.html#3.1)

          不過靜態的報表沒有什么意思,所以有句話說得好:“A datasource + a jasper = a print”。它可以支持的輸出格式如下:PDF, HTML, XML, XLS, CVS 等等。因此, Jasperreport 的原始輸入就是一個 .xml 文檔,想象看一個簡單報表的 xml 文件也有幾百行,在沒有 iReport 以前用它做報表是多么痛苦。(令我不可思議的是,我一個同學公司曾經用 jasperreport 做報表,可是它們竟然沒有用過 iReport,天!)。現在不用怕了,用 iReport 可以輕松的搞定這 個XML,寫到這里,我想起了 struts_config.xml,也曾出現不少關于它的可視化的編輯器,呵呵。

          如果在 iReport 以前,如果你要做報表,你要花上很長時間來熟悉 Jasperreport 的文檔,熟悉文檔的一個用途就是編寫那個 xml 文件,現在你只要他熟悉文檔的時間來熟悉 iReport 就可以了。

          3. IReport初探

          先來看一下這個(rich and very simple to user GUI)吧:

          如果以前你有過用 vb 或其他的開發工具開發報表的經驗的話,這個界面乍一看應該很熟悉的,如果碰巧你又熟悉 java 語言,哇,那么你用 iRepor t應該易如反掌啊,呵呵

          如果我們成功運行 iReport 的話,可以看到如下的主界面:

          點擊“新增” 按鈕可以創建一個新的空報表,考慮到生成后的XML文件編輯的時候可以顯示中文,請在 xml encoding 選項上 GB2312 (沒有選項自己手動輸入),如下圖:

          當設置完必要的選項點擊完成可以得到一個空白的報表,如下圖:

          好了,輸入一段文本,很簡單,點擊創建“靜態文本”按鈕 ,然后在報表任何一個工作區(如 title,pageheader,detail,pagefooter summary 等等)輸入,如輸入“今天天氣不錯!”。在屬性框頁可以對輸入的內容進行屬性控制,如字體,顏色,大小,以及其他的屬性,報表中任何的元素(靜態文本,線,框等等)都有自己的屬性頁,一般雙擊任何元素都可以彈出該元素的屬性頁,屬性頁如下圖:

          完工,一個最簡單的報表就生成了,iReport 配有運行環境,如下快捷按鈕:

          左邊的按鈕是運行靜態報表(無需數據庫環境),右邊的是運行動態報表(這時需要設置數據庫連接,數據庫的連接載下面介紹)

          那么經過上遍的努力,很顯然我們將要運行的靜態報表,那么點擊左邊的按鈕就可以看到下面的 pdf,如圖:

          當然上遍的例子是最簡單,呵呵

          下面我將采用問答的方式進行逐步講解 iReport 的用法
          1. 如何連接數據庫?
          2. 如何定義變量、參數以及字段?
          3. 如何定義字體以及如何使用自定義的字體(如黑體、楷體或者比較藝術化的子體)?
          4. 如何執行 SQL 腳本進行查詢?
          5. 如何把做好的報表引入到應用程序中?

          好了,針對上面的問題,我在下面的篇幅中給于解答并穿插介紹 iReport 中其它的功能菜單。

          1. 如何連接數據庫?

          靜態的報表其實很少的,我在前一篇文檔中有提到過一句經典的話:“A datasource + a jasper = a print” 因此有必要首先介紹一下如何連接數據庫,其實很簡單。進入 Datasource/Connections/Datasources 菜單或者點擊 快捷按鈕,則出現下面屬性頁:

          進行必要的數據庫連接屬性配置,然后點擊test按鈕進行測試,如果提示測試成功,則保存數據庫連接,即可。

          2. 如何定義變量、參數以及字段?

          變量、參數以及字段的定義,在 iReport 里是比較方便的,在菜單 view 下可以看到一些控制點,如下圖:

          Report properties 設置報表屬性

          Report query 設置查詢語句的,這個在下面有介紹

          Report fields 設置字段(數據庫)

          Report variables 設置變量

          Report parameters 設置參數

          Report fonts 設置字體

          順便把下面的你個也說明一下

          Bands,彈出報表工作區(如 title detail 等)的屬性頁

          Report groups 設置組

          Element properties 元素屬性頁

          Element browser 顯示報表所有元素的列表

          設置很容易,但是在報表中引用這些變量、參數和字段就有寫說頭了,呵呵J,讓我們一步一步慢慢來。
          在 iReport 中引用的方式,如下表

          元素 名稱 引用
          變量 variablesName $V{ variablesName }
          參數 parameterName $P{ parameterName }
          字段 filedsName $F{ filedsName }

          其實這些不說明好像不知道如何辦,一單說明了,它們也是很好用的也很簡單的。多用吧!

          3. 如何定義字體以及如何使用自定義的字體(如黑體、楷體或者比較藝術化的子體)?

          因為考慮到使用亞洲字體,因此你需要下在額外的 ja r包 iTextAsian.jar,如果 iReport 下載包中含有此 jar 包,此步驟可免。

          目前在 iReport 中使用中文字體,好像只有宋體一種,如果想用其它的字體(如黑體、楷體等)需要另外的方法,這在下面介紹,下面介紹如何使用常用的中文字體“宋體”的設置方法,在問題2中我們看到引入字體的選項,點擊 “Report fonts” 可以看到下面屬性頁:

          好,如上邊的設置就已經設置好宋體,以后在報表的任何地方都可以引用該字體,如下面我們要把我們在上邊的例子中的元素“今天天氣不錯!”改為用宋體,如下:

          這樣只要我們在 Report font 選項中選中 songti 那么下面的屬性自動繼承,呵呵,方便吧!
          好,下面講述如何使用宋體以外的中文字體,如:黑體、楷體或其他的藝術化的字體。

          也很簡單,不過好像目前 iReport 的功能不夠完美的緣故,還要手動修改 xml 文件才可以達到要求,如下圖我們定義黑體:

          首先不同的是在 PDF font name 選項中選中 External TTF font…,按照常理,此時要在緊接著的選項中選擇黑體的 ttf 文件 SIMHEI.TTF,可是不知為什么 TrueType font 的選項是空的,(當時我在學習的時候,這步操作讓我好勝郁悶),天啊,該怎么辦?!

          后來我查看了相應的 xml 文件,如下:(由于文件較大,因此只截取我們關心的)


          ??????mode="Opaque"
          ????x="13"
          ????y="42"
          ????width="239"
          ????height="53"
          ????forecolor="#000000"
          ????backcolor="#FFFFFF"
          ????positionType="FixRelativeToTop"
          ????isPrintRepeatedValues="true"
          ????isRemoveLineWhenBlank="false"
          ????isPrintInFirstWholeBand="false"
          ????isPrintWhenDetailOverflows="false"/>
          ??
          ????
          ??

          ??

          大家可以看到黑體的 pdfFontName=”” 是空的,于是我嘗試把系統黑體的TTF文件路徑(C:\WINNT\fonts\SIMHEI.TTF)寫到這個地方,哈哈,居然成功了。

          于是我得到這樣一個結論,目前如果你在報表中使用其它的字體,首先要做上面圖中所做的屬性設置,然后手動把字體的 TTF 文件寫到 pdfFontName=””,雖然麻煩了點,不過這招挺管用,呵呵!

          我是在一個星期以前接觸 iReport 和 Jasperreport 的,下載最初它們并沒有吸引我的興趣(或信任),主要是他們的版本的問題(我一直不敢用版本都不到1.0的工具軟件,目前它們的版本: iReport0.2.2, Jasperreport0.5.0),不過聽說有人在用他們,于是就仔細看了一下(因為在 java 應用程序的 web 打印方面我一直都是采用瀏覽器打印,非常痛苦,所以寧可信其有不可信其無,呵呵……)

          一個星期下來,我針對項目中關于報表的一些需求點進行了嘗試,發現他們都可以解決,真實大快人心,于是今天把他們推薦給各位。其實我們做報表用的只是 Jasperreport, iReport 是一個 Jasperreport 的可視化開發工具(不要看它的界面有些簡陋,我們要的操作他都可以幫我們輕松搞定。),當然 iReport 還有其他的用處,不過這里不做闡述。目前幾乎還沒有中文的介紹他們整合開發的文章,盡管如此我也不準備非常詳細的介紹它們,在這里我僅將我的一些經驗寫出來,不乏有些地方淺嘗輒止,如果想細致的研究它們還請閱讀它們配套的英文文檔。Jasperreport 的配套文檔非常詳細,該文檔是收費的,不過網上有流傳的電子版本,本人有幸得到一份,如果你需要可以到本人站點(http://plateau.sicool.com)獲得,在此感謝 Jasperreport 的為開源世界做出的貢獻。相反 iReport 的文檔不多,也許作者認為其足夠簡單,我也是經過無數的探索才有些開發的經驗。

          好了,讓我們進入上述兩者整合開發報表的歷程……

          1. 首先你要得到它們最新的版本,你可以到下邊的地址下載

          iRport: http://ireport.sourceforge.net
          Jasperreport: http://jasperreports.sourceforge.net

          他們的配置也很簡單:iReport 解壓縮以后編輯目錄下的 iReport.bat 文件即可,如下

          @echo off

          set JAVA_HOME=C:\jdk14
          set ANT_HOME=d:\ant
          set IREPORT_HOME=C:\Documenti\progetti\iReport\iReport2\

          rem %ANT_HOME%\bin\ant javadocs
          %ANT_HOME%\bin\ant iReport

          是不是很簡單,你只要設置相應的一些路經就可以,這里是采用 ant 來運行,當然如果你沒有安裝 ant 也不想安裝它,那么也可以,不過這里我買個官子,你們自己可以到解壓縮以后的目錄中找到相應的運行方法。呵呵,安裝 ant 吧! Jasperreport 不需要任何配置,你只需將下載以后的 jar 包放到 classpath 下即可。呵呵,說來簡單,可是如果沒有 iReport 來替我們干“臟活”,那么做報表的工作將是怎樣的痛苦~!

          2. Jasperreport是如何工作的?

          這里我就往簡單里說了。首先要先有個 xml 文件,然后編譯成 jasper 文件(以 .jasper 結尾),我們真正要使用的是編譯以后的 .jasper 文件,這很像我們熟悉的 .jsp 文件,其實我們調用的是其編譯以后的 servlet。


          (圖片來自 http://ireport.sourceforge.net/cap3.html#3.1)

          不過靜態的報表沒有什么意思,所以有句話說得好:“A datasource + a jasper = a print”。它可以支持的輸出格式如下:PDF, HTML, XML, XLS, CVS 等等。因此, Jasperreport 的原始輸入就是一個 .xml 文檔,想象看一個簡單報表的 xml 文件也有幾百行,在沒有 iReport 以前用它做報表是多么痛苦。(令我不可思議的是,我一個同學公司曾經用 jasperreport 做報表,可是它們竟然沒有用過 iReport,天!)。現在不用怕了,用 iReport 可以輕松的搞定這 個XML,寫到這里,我想起了 struts_config.xml,也曾出現不少關于它的可視化的編輯器,呵呵。

          如果在 iReport 以前,如果你要做報表,你要花上很長時間來熟悉 Jasperreport 的文檔,熟悉文檔的一個用途就是編寫那個 xml 文件,現在你只要他熟悉文檔的時間來熟悉 iReport 就可以了。

          3. IReport初探

          先來看一下這個(rich and very simple to user GUI)吧:

          如果以前你有過用 vb 或其他的開發工具開發報表的經驗的話,這個界面乍一看應該很熟悉的,如果碰巧你又熟悉 java 語言,哇,那么你用 iRepor t應該易如反掌啊,呵呵

          如果我們成功運行 iReport 的話,可以看到如下的主界面:

          點擊“新增” 按鈕可以創建一個新的空報表,考慮到生成后的XML文件編輯的時候可以顯示中文,請在 xml encoding 選項上 GB2312 (沒有選項自己手動輸入),如下圖:

          當設置完必要的選項點擊完成可以得到一個空白的報表,如下圖:

          好了,輸入一段文本,很簡單,點擊創建“靜態文本”按鈕 ,然后在報表任何一個工作區(如 title,pageheader,detail,pagefooter summary 等等)輸入,如輸入“今天天氣不錯!”。在屬性框頁可以對輸入的內容進行屬性控制,如字體,顏色,大小,以及其他的屬性,報表中任何的元素(靜態文本,線,框等等)都有自己的屬性頁,一般雙擊任何元素都可以彈出該元素的屬性頁,屬性頁如下圖:

          完工,一個最簡單的報表就生成了,iReport 配有運行環境,如下快捷按鈕:

          左邊的按鈕是運行靜態報表(無需數據庫環境),右邊的是運行動態報表(這時需要設置數據庫連接,數據庫的連接載下面介紹)

          那么經過上遍的努力,很顯然我們將要運行的靜態報表,那么點擊左邊的按鈕就可以看到下面的 pdf,如圖:

          當然上遍的例子是最簡單,呵呵

          下面我將采用問答的方式進行逐步講解 iReport 的用法
          1. 如何連接數據庫?
          2. 如何定義變量、參數以及字段?
          3. 如何定義字體以及如何使用自定義的字體(如黑體、楷體或者比較藝術化的子體)?
          4. 如何執行 SQL 腳本進行查詢?
          5. 如何把做好的報表引入到應用程序中?

          好了,針對上面的問題,我在下面的篇幅中給于解答并穿插介紹 iReport 中其它的功能菜單。

          1. 如何連接數據庫?

          靜態的報表其實很少的,我在前一篇文檔中有提到過一句經典的話:“A datasource + a jasper = a print” 因此有必要首先介紹一下如何連接數據庫,其實很簡單。進入 Datasource/Connections/Datasources 菜單或者點擊 快捷按鈕,則出現下面屬性頁:

          進行必要的數據庫連接屬性配置,然后點擊test按鈕進行測試,如果提示測試成功,則保存數據庫連接,即可。

          2. 如何定義變量、參數以及字段?

          變量、參數以及字段的定義,在 iReport 里是比較方便的,在菜單 view 下可以看到一些控制點,如下圖:

          Report properties 設置報表屬性

          Report query 設置查詢語句的,這個在下面有介紹

          Report fields 設置字段(數據庫)

          Report variables 設置變量

          Report parameters 設置參數

          Report fonts 設置字體

          順便把下面的你個也說明一下

          Bands,彈出報表工作區(如 title detail 等)的屬性頁

          Report groups 設置組

          Element properties 元素屬性頁

          Element browser 顯示報表所有元素的列表

          設置很容易,但是在報表中引用這些變量、參數和字段就有寫說頭了,呵呵J,讓我們一步一步慢慢來。
          在 iReport 中引用的方式,如下表

          元素 名稱 引用
          變量 variablesName $V{ variablesName }
          參數 parameterName $P{ parameterName }
          字段 filedsName $F{ filedsName }

          其實這些不說明好像不知道如何辦,一單說明了,它們也是很好用的也很簡單的。多用吧!

          3. 如何定義字體以及如何使用自定義的字體(如黑體、楷體或者比較藝術化的子體)?

          因為考慮到使用亞洲字體,因此你需要下在額外的 ja r包 iTextAsian.jar,如果 iReport 下載包中含有此 jar 包,此步驟可免。

          目前在 iReport 中使用中文字體,好像只有宋體一種,如果想用其它的字體(如黑體、楷體等)需要另外的方法,這在下面介紹,下面介紹如何使用常用的中文字體“宋體”的設置方法,在問題2中我們看到引入字體的選項,點擊 “Report fonts” 可以看到下面屬性頁:

          好,如上邊的設置就已經設置好宋體,以后在報表的任何地方都可以引用該字體,如下面我們要把我們在上邊的例子中的元素“今天天氣不錯!”改為用宋體,如下:

          這樣只要我們在 Report font 選項中選中 songti 那么下面的屬性自動繼承,呵呵,方便吧!
          好,下面講述如何使用宋體以外的中文字體,如:黑體、楷體或其他的藝術化的字體。

          也很簡單,不過好像目前 iReport 的功能不夠完美的緣故,還要手動修改 xml 文件才可以達到要求,如下圖我們定義黑體:

          首先不同的是在 PDF font name 選項中選中 External TTF font…,按照常理,此時要在緊接著的選項中選擇黑體的 ttf 文件 SIMHEI.TTF,可是不知為什么 TrueType font 的選項是空的,(當時我在學習的時候,這步操作讓我好勝郁悶),天啊,該怎么辦?!

          后來我查看了相應的 xml 文件,如下:(由于文件較大,因此只截取我們關心的)


          ??????mode="Opaque"
          ????x="13"
          ????y="42"
          ????width="239"
          ????height="53"
          ????forecolor="#000000"
          ????backcolor="#FFFFFF"
          ????positionType="FixRelativeToTop"
          ????isPrintRepeatedValues="true"
          ????isRemoveLineWhenBlank="false"
          ????isPrintInFirstWholeBand="false"
          ????isPrintWhenDetailOverflows="false"/>
          ??
          ????
          ??

          ??

          大家可以看到黑體的 pdfFontName=”” 是空的,于是我嘗試把系統黑體的TTF文件路徑(C:\WINNT\fonts\SIMHEI.TTF)寫到這個地方,哈哈,居然成功了。

          于是我得到這樣一個結論,目前如果你在報表中使用其它的字體,首先要做上面圖中所做的屬性設置,然后手動把字體的 TTF 文件寫到 pdfFontName=””,雖然麻煩了點,不過這招挺管用,呵呵!

          ]]>
          posted on 2005-09-13 10:25 Sung 閱讀(722) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 遵义市| 且末县| 灵璧县| 古田县| 潮安县| 武邑县| 广东省| 武定县| 乌兰浩特市| 明星| 大庆市| 南京市| 鸡西市| 绥棱县| 静海县| 青海省| 盈江县| 枣庄市| 瑞安市| 双城市| 西贡区| 咸丰县| 磐石市| 康乐县| 桂平市| 兴国县| 通辽市| 贺州市| 张北县| 长岛县| 吴忠市| 巴林右旗| 威远县| 陵水| 阳城县| 丹东市| 永嘉县| 正阳县| 昌邑市| 临邑县| 信宜市|