第一部分 使用iReport製作報表的詳細過程(Windows環境下)

來源:互聯網
上載者:User
1、前言

在網路上可以搜尋到很多使用iReport和Jasperreport配合實現各種報表任務的文章,但是我覺得很少有一篇(幾乎沒有)做一個比較詳細的介紹如何使用iReport製作報表的全過程,我所看過的文章的基本思想是覆蓋面廣,很多內容都是提及即過,並不是開發人員都有時間為每個實踐花費時間自己實現,如果能有更詳細的資料,那豈不是一件樂事。出於這個念頭促使我寫這篇文章,希望能對那些使用iReport和Jasperreport朋友有所協助,特別是需要親身去實現報表的朋友,希望能給你們帶來一點協助。本文不是對iReport的每個細節進行介紹,關於iReport的每個細節可以參考iReport網站的資料,但是可能得花費一些費用。一般使用者沒有必要付出這些費用,因為我們關心的是如何製作我們需要的報表,而不是去擴充iReport,比如製作iReport的外掛程式。

  2、準備 2.1、下載JDK

地址:http://www.sun.com,選擇1.3以上版本(建議1.4.2以上版本),安裝JDK,預設安裝即可;如果你的系統已經有安裝過JDK或是有JRE即可省略這一步驟,驗證JDK或是JRE是否可以預設運行,在命令列(CMD)打入X:>java 如果出現:Usage:java………………………..開頭的一堆資訊既是通過驗證。否則必須進行配置,配置資訊如下,在windows的環境變數設定:

path:在最後面加入“;java的安裝目錄”

JAVA_HOME :“java的安裝目錄”

CLASSPATH:“java的安裝目錄/bin”
重新驗證JDK或是JRE是否可以在CMD任何位置運行 2.2、下載iReport

地址:http://ireport.sourceforge.net/,選擇0.3.2版本(發稿之前為止建議使用的版本)解壓iReport在任意目錄,解壓後的檔案裡面有一個iReport.bat,通過雙擊,過大約30秒鐘如果可以彈出iReport的主表單即表明你的系統已經可以運行iReport了,如果不能彈出主表單,一般是第一步驟錯誤,或是沒有完成。 2.3、準備資料庫

iReport支援絕大部分資料庫,只要該資料庫能提供JDBC磁碟機。本文提供MySql資料庫作為例子,但是文章最後會提到如何配置Oracle的支援。關於資料庫的安裝和建立表不屬於本文的範圍,請參考其他資料。本文假設已經安裝了MySql和在MySql已經有一些表,並且確定表中已經有資料了。

*【特別提示】MySql的版本要求與iReport檔案夾下的Lib目錄的使用MySql驅動程式相容,筆者建議到 http://dev.mysql.com/downloads/ 下載最新版本mysql的磁碟機,這樣就不會應為JDBC磁碟機的問題而當心資料庫的支援問題。 2.4、啟動MySql服務

確定Mysql使用的的字元集是重要的問題,特別是對需要中文報表的朋友,應該特別注意這個問題。 2.5、確定商務邏輯

       也就是希望完成什麼樣的報表任務。需要實現的報表的詳細描述,這是實現報表的業務條件,否則所有的任務絕大部分沒有意義。本文使用一個Bug記錄表為例,本文的例子是製作一個根據項目和項目中的模組分組的Bug量統計。
3、開始配置基本資料 3.1、配置介面使用的語言和報表輸出路徑

       第一次進入系統是英文環境,可以通過【Tools】-【Options】開啟配置iReport系統的基本資料對話方塊。在“Language”選項裡面選擇你需要的介面語言,比如“中文-中國”。點擊【Apply】按鈕,系統既把整個介面中文化。

       在配置iReport系統的基本資料對話方塊中選擇【編譯】Label,之後決定你的報表輸出路徑,可以把“編譯在報表資料檔案夾”選擇打勾,這樣報表的jrxml檔案和jasper檔案就放置同一檔案夾。(在建立報表時會要求你把jrxml檔案儲存到指定的檔案夾)

【Options】選項中的一部分參數修改不能通過【Apply】按鈕直接起作用,比如“Look&Feel”,必須重新啟動iReport才能起作用。不知道是不是iReport的Bug。。最後【存檔】。 3.2、配置MySql的資料庫連接

       這就是報表與資料庫的介面。可以通過【資料來源】-【串連/資料來源】開啟配置列表對話方塊,iReport會記錄以前使用的所有串連,除非你手工刪除這些串連,否則所有的串連都會存在串連/資料來源配置列表對話方塊中,不管是否確實可用。

       點擊【New】進入配置新串連介面,如圖:


填寫JDBC串連需要的資訊,iReport支援多種資料來源串連,如圖:

本文只是介紹DataBase JDBC Connection串連方式,這也是最常用的方式,特別是在嵌入式報表應用。所有的資訊填寫並測試通過之後,最後就是儲存資訊。回到配置列表對話方塊,關閉對話方塊,完成MySql資料庫JDBC串連配置。
提示:如果你需要報表提供中文內容顯示可以在JDBC URL下工夫,比如輸入:
jdbc:mysql://localhost/SUBRDB?user=****&password=****&useUnicode=true&characterEncoding=GB2312
其中的****號替換成資料庫的使用者合密碼。
3.3、建立一個空報表的基本配置

單擊工具列的第一個工具“New Report”,建立一個報表,輸入報表名稱和定義報表的一些參數,比如名稱輸入BugsRpt(例子是做一個項目的Bug量統計報表),單擊【More….】選擇標籤,填寫或是選擇XML編碼,這是關係到你的XML支援的字元集的選擇,請根據需要選擇,比如需要你的XML檔案支援中文,那麼可以輸入GB2312或是GBK,之後點擊【OK】按鈕,進入報表的設計介面。

*【特別提示】請在開始任何工作之前儲存報表,這時iReport提示儲存報表的位置,選擇合適的位置之後輸入BugsRpt作為名稱。 3.4、定義報表可能需要的字型類型及其屬性

       一個報表的內容五花八門,有表頭、欄位名、資料、其他變數資訊等等,如果這些資訊都是一致的字型和屬性(比如顏色),那麼整個報表就死氣沉沉,顯得很粗糙了。我們可以在為報表添加每個元素時定義元素的屬性,但是那是一個多麼費時的工作,如果能預先定義一些屬性的組合,之後在建立每個元素時只需選擇這些組合的其中一個即可,省事又快速。

       單擊【預覽】-【報表字型】開啟自訂群組合對話方塊。單擊【New】進入定義詳細對話方塊,如圖:按照圖中的順序填寫資訊和步驟,依次定義“表頭”、“組”、“列”、“列內容”、“統計計算”、“其他”等6中字型組合。注意PDF內嵌字型的選擇,如果你需要報表時以PDF檔案格式提供,那麼對此需要作出選擇。


4、理解幾個重要的概念 4.1、iReport的輸出格式

iReport的預覽輸出格式可以支援以下幾種:

PDF、HTML、CSV、JAVA2D、Excel、純文字、JRViewer,其中最常用的是PDF、JRViewer。本文以JRViewer為例子。JRViewer是直接以C/S方式作為報表的輸出格式,在JFrame架構下輸出。Jasperreport提供預設的JRViewer輸出類。 4.2、報表的動態物件變數、參數、欄位

在使用iReport的過程中會碰到很多與變數(Variables)、參數(Parameters)、欄位(Fields)這些有關的內容,我們要介紹這些對象的使用和意義:

·欄位(Fields):是資料庫抽取出來的,希望在報表中出現的資料庫內容。比如一個ID的所有值。$F{ filedsName }

·參數(Parameters):這是你的應用需要提供給報表的入口,比如你希望在報表被解釋的時候提供Where語句的條件值,那麼就可以使用參數(Parameters)。$P{ parameterName }

·變數(Variables):這是報表中一些邏輯運算的表現,比如統計值。$V{ variablesName }

每種對象的定義格式如每個對象的後面說明,比如定義一個變數(Variables),那麼運算式就寫成$V{ variablesName },報表中出現的就是這個變數的名稱。後文會詳細的介紹使用方法。 4.3、編譯、靜態運行、動態運行

Jasperreport運行時需要的就是一個jasper尾碼的檔案,編譯過程其實就是把jrxml尾碼的檔案產生jasper尾碼的檔案。(可以參考Jasperreport的運行原理)

靜態運行和動態運行是相對的,後者帶資料來源運行,比如帶資料庫運行。前者就是靜態文本運行,和資料來源無關,如果報表中出現和資料來源有關的對象,則以null顯示。 4.4、報表結構

       一個報表的結構大致是幾個部分:title、pageHeader、columnHeader、detial、columnFooter、pageFooter、summary、groupHeader、groupfooter。

·Title:每個報表一般會有一個名字,比如×××銷售報告,title就是擱置這個名稱的最好地方了,當然你也可以根據需要擱置在合適的地方。

·pageHeader:報表的一些公用要素,比如頁碼、建立時間、建立人等資訊放置在這裡是比較好的選擇。

·columnHeader:無可非議的這裡是放置列的名稱,記住不是列資料。

·Detial:放置需要迴圈的資料,比如銷售記錄資料。

·columnFooter:放置列層級的統計計算值或是列的說明。

·pageFooter:放置頁層級的統計值或是頁的說明。

·Summary:可能需要對幾頁(你的報表可能有幾個頁組成)的統計值。比如50個銷售記錄共佔用了3頁,那麼放置這些統計記錄的統計值最好的地方就是summary。

·groupHeader:每個表的內容可能需要根據某個屬性進行劃分顯示內容和計算內容,比如希望以月份為單位每組分開顯示銷售記錄,那麼就可以定義一個組(組的定義參考後文),groupHeader就是放置組說明或是組標誌最好的地方。

·Groupfooter:放置組的統計或是說明

5、向表添加對象 5.1、添加靜態對象

可以通過工具列的工具添加靜態對象,比如文本,點擊【T】,之後在報表的空白處單擊,如此即可把靜態對象添加到報表,然後拖動對象的邊框,使它的大小合適,雙擊對象彈出對象的屬性配置對話方塊,切換到【Font】Label,在“Report font”的ComBox選擇“表頭”字型,(表頭字型是前文提供的自訂屬性組合),再切換到【Static Text】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.