<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    靈魂-放水

    為學(xué)日益,為道日損。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    第一部分:使用iReport制作報表的詳細(xì)過程(Windows環(huán)境下)

    提示:在有些板塊,文中的圖片看不到,建議到我的blog瀏覽文章:http://blog.csdn.net/jemlee2002/
    文章將會涉及3個方面的內(nèi)容:

    第一部分:使用iReport制作報表的詳細(xì)過程(Windows環(huán)境下)

    第二部分:使用Jasperreport作為報表控件開發(fā)胖客戶端報表應(yīng)用

    第三部分:使用Jasperreport作為報表控件開發(fā)Web報表應(yīng)用



    1、前言

    在網(wǎng)絡(luò)上可以搜索到很多使用iReport和Jasperreport配合實現(xiàn)各種報表任務(wù)的文章,但是我覺得很少有一篇(幾乎沒有)做一個比較詳細(xì)的介紹如何使用iReport制作報表的全過程,我所看過的文章的基本思想是覆蓋面廣,很多內(nèi)容都是提及即過,并不是開發(fā)人員都有時間為每個實踐花費時間自己實現(xiàn),如果能有更詳細(xì)的資料,那豈不是一件樂事。出于這個念頭促使我寫這篇文章,希望能對那些使用iReport和Jasperreport朋友有所幫助,特別是需要親身去實現(xiàn)報表的朋友,希望能給你們帶來一點幫助。本文不是對iReport的每個細(xì)節(jié)進(jìn)行介紹,關(guān)于iReport的每個細(xì)節(jié)可以參考iReport網(wǎng)站的資料,但是可能得花費一些費用。一般用戶沒有必要付出這些費用,因為我們關(guān)心的是如何制作我們需要的報表,而不是去擴(kuò)展iReport,比如制作iReport的插件。

    2、準(zhǔn)備

    2.1、下載JDK

    地址:http://www.sun.com,選擇1.3以上版本(建議1.4.2以上版本),安裝JDK,默認(rèn)安裝即可;如果你的系統(tǒng)已經(jīng)有安裝過JDK或是有JRE即可省略這一步驟,驗證JDK或是JRE是否可以默認(rèn)運行,在命令行(CMD)打入X:>java 如果出現(xiàn):Usagejava………………………..開頭的一堆信息既是通過驗證。否則必須進(jìn)行配置,配置信息如下,在windows的環(huán)境變量設(shè)置:

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

    JAVA_HOME :“java的安裝目錄”

    CLASSPATH:“java的安裝目錄\\bin
    重新驗證JDK或是JRE是否可以在CMD任何位置運行

    2.2、下載iReport

    地址:http://ireport.sourceforge.net/,選擇0.3.2版本(發(fā)稿之前為止建議使用的版本)解壓iReport在任意目錄,解壓后的文件里面有一個iReport.bat,通過雙擊,過大約30秒鐘如果可以彈出iReport的主窗體即表明你的系統(tǒng)已經(jīng)可以運行iReport了,如果不能彈出主窗體,一般是第一步驟錯誤,或是沒有完成。

    2.3、準(zhǔn)備數(shù)據(jù)庫

    iReport支持絕大部分?jǐn)?shù)據(jù)庫,只要該數(shù)據(jù)庫能提供JDBC驅(qū)動器。本文提供MySql數(shù)據(jù)庫作為例子,但是文章最后會提到如何配置Oracle的支持。關(guān)于數(shù)據(jù)庫的安裝和建立表不屬于本文的范圍,請參考其他資料。本文假設(shè)已經(jīng)安裝了MySql和在MySql已經(jīng)有一些表,并且確定表中已經(jīng)有數(shù)據(jù)了。

    *【特別提示】MySql的版本要求與iReport文件夾下的Lib目錄的使用MySql驅(qū)動程序兼容,筆者建議到http://dev.mysql.com/downloads/下載最新版本mysql的驅(qū)動器,這樣就不會應(yīng)為JDBC驅(qū)動器的問題而當(dāng)心數(shù)據(jù)庫的支持問題。

    2.4、啟動MySql服務(wù)

    確定Mysql使用的的字符集是重要的問題,特別是對需要中文報表的朋友,應(yīng)該特別注意這個問題。

    2.5、確定商務(wù)邏輯

    ?????? 也就是希望完成什么樣的報表任務(wù)。需要實現(xiàn)的報表的詳細(xì)描述,這是實現(xiàn)報表的業(yè)務(wù)條件,否則所有的任務(wù)絕大部分沒有意義。本文使用一個Bug記錄表為例,本文的例子是制作一個根據(jù)項目和項目中的模塊分組的Bug量統(tǒng)計。

    3、開始配置基本信息

    3.1、配置界面使用的語言和報表輸出路徑

    ?????? 第一次進(jìn)入系統(tǒng)是英文環(huán)境,可以通過【Tools】-【Options】開啟配置iReport系統(tǒng)的基本信息對話框。在“Language”選項里面選擇你需要的界面語言,比如“中文-中國”。點擊【Apply】按鈕,系統(tǒng)既把整個界面中文化。

    ?????? 在配置iReport系統(tǒng)的基本信息對話框中選擇【編譯】Label,之后決定你的報表輸出路徑,可以把“編譯在報表數(shù)據(jù)文件夾”選擇打勾,這樣報表的jrxml文件和jasper文件就放置同一文件夾。(在新建報表時會要求你把jrxml文件保存到指定的文件夾)

    Options】選項中的一部分參數(shù)修改不能通過【Apply】按鈕直接起作用,比如“Look&Feel”,必須重新啟動iReport才能起作用。不知道是不是iReport的Bug?!最后【存檔】。

    3.2、配置MySql的數(shù)據(jù)庫連接

    ?????? 這就是報表與數(shù)據(jù)庫的接口。可以通過【資料來源】-【連接/資料來源】開啟配置列表對話框,iReport會記錄以前使用的所有連接,除非你手工刪除這些連接,否則所有的連接都會存在連接/資料來源配置列表對話框中,不管是否確實可用。

    ?????? 點擊【New】進(jìn)入配置新連接界面,如圖:

    填寫JDBC連接需要的信息,iReport支持多種數(shù)據(jù)源連接,如圖:

    本文只是介紹DataBase JDBC Connection連接方式,這也是最常用的方式,特別是在嵌入式報表應(yīng)用。所有的信息填寫并測試通過之后,最后就是保存信息。回到配置列表對話框,關(guān)閉對話框,完成MySql數(shù)據(jù)庫JDBC連接配置。
    提示:如果你需要報表提供中文內(nèi)容顯示可以在JDBC URL下工夫,比如輸入:
    jdbc:mysql://localhost/SUBRDB?user=****&password=****&useUnicode=true&characterEncoding=GB2312
    其中的****號替換成數(shù)據(jù)庫的用戶合密碼。

    3.3、新建一個空報表的基本配置

    單擊工具欄的第一個工具“New Report”,新建一個報表,輸入報表名稱和定義報表的一些參數(shù),比如名稱輸入BugsRpt(例子是做一個項目的Bug量統(tǒng)計報表),單擊【More….】選擇標(biāo)簽,填寫或是選擇XML編碼,這是關(guān)系到你的XML支持的字符集的選擇,請根據(jù)需要選擇,比如需要你的XML文件支持中文,那么可以輸入GB2312或是GBK,之后點擊【OK】按鈕,進(jìn)入報表的設(shè)計界面。

    *【特別提示】請在開始任何工作之前保存報表,這時iReport提示保存報表的位置,選擇合適的位置之后輸入BugsRpt作為名稱。

    3.4、定義報表可能需要的字體類型及其屬性

    ?????? 一個報表的內(nèi)容五花八門,有表頭、欄位名、數(shù)據(jù)、其他變量信息等等,如果這些信息都是一致的字體和屬性(比如顏色),那么整個報表就死氣沉沉,顯得很粗糙了。我們可以在為報表添加每個元素時定義元素的屬性,但是那是一個多么費時的工作,如果能預(yù)先定義一些屬性的組合,之后在創(chuàng)建每個元素時只需選擇這些組合的其中一個即可,省事又快速。

    ?????? 單擊【預(yù)覽】-【報表字體】開啟自定義組合對話框。單擊【New】進(jìn)入定義詳細(xì)對話框,如圖:按照圖中的順序填寫信息和步驟,依次定義“表頭”、“組”、“列”、“列內(nèi)容”、“統(tǒng)計計算”、“其他”等6中字體組合。注意PDF內(nèi)嵌字體的選擇,如果你需要報表時以PDF文件格式提供,那么對此需要作出選擇。

    4、理解幾個重要的概念

    4.1、iReport的輸出格式

    iReport的預(yù)覽輸出格式可以支持以下幾種:

    PDFHTMLCSVJAVA2DExcel、純文字、JRViewer,其中最常用的是PDFJRViewer。本文以JRViewer為例子。JRViewer是直接以C/S方式作為報表的輸出格式,在JFrame框架下輸出。Jasperreport提供默認(rèn)的JRViewer輸出類。

    4.2、報表的動態(tài)對象變量、參數(shù)、字段

    在使用iReport的過程中會碰到很多與變量(Variables)、參數(shù)(Parameters)、字段(Fields)這些有關(guān)的內(nèi)容,我們要介紹這些對象的使用和意義:

    ·字段(Fields):是數(shù)據(jù)庫抽取出來的,希望在報表中出現(xiàn)的數(shù)據(jù)庫內(nèi)容。比如一個ID的所有值。$F{ filedsName }

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

    ·變量(Variables):這是報表中一些邏輯運算的表現(xiàn),比如統(tǒng)計值。$V{ variablesName }

    每種對象的定義格式如每個對象的后面說明,比如定義一個變量(Variables),那么表達(dá)式就寫成$V{ variablesName },報表中出現(xiàn)的就是這個變量的名稱。后文會詳細(xì)的介紹使用方法。

    4.3、編譯、靜態(tài)運行、動態(tài)運行

    Jasperreport運行時需要的就是一個jasper后綴的文件,編譯過程其實就是把jrxml后綴的文件生成jasper后綴的文件。(可以參考Jasperreport的運行原理)

    靜態(tài)運行和動態(tài)運行是相對的,后者帶數(shù)據(jù)源運行,比如帶數(shù)據(jù)庫運行。前者就是靜態(tài)文本運行,和數(shù)據(jù)源無關(guān),如果報表中出現(xiàn)和數(shù)據(jù)源有關(guān)的對象,則以null顯示。

    4.4、報表結(jié)構(gòu)

    ?????? 一個報表的結(jié)構(gòu)大致是個部分:titlepageHeadercolumnHeaderdetialcolumnFooterpageFootersummarygroupHeadergroupfooter

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

    ·pageHeader:報表的一些公共要素,比如頁碼、創(chuàng)建時間、創(chuàng)建人等信息放置在這里是比較好的選擇。

    ·columnHeader:無可非議的這里是放置列的名稱,記住不是列數(shù)據(jù)。

    ·Detial:放置需要循環(huán)的數(shù)據(jù),比如銷售記錄數(shù)據(jù)。

    ·columnFooter:放置列級別的統(tǒng)計計算值或是列的說明。

    ·pageFooter:放置頁級別的統(tǒng)計值或是頁的說明。

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

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

    ·Groupfooter:放置組的統(tǒng)計或是說明

    5、向表添加對象

    5.1、添加靜態(tài)對象

    可以通過工具欄的工具添加靜態(tài)對象,比如文本,點擊【T】,之后在報表的空白處單擊,如此即可把靜態(tài)對象添加到報表,然后拖動對象的邊框,使它的大小合適,雙擊對象彈出對象的屬性配置對話框,切換到【FontLabel,在“Report font”的ComBox選擇“表頭”字體,(表頭字體是前文提供的自定義屬性組合),再切換到【Static TextLabel,修改表頭的名字,比如“Bug統(tǒng)計報表”或是“銷售記錄統(tǒng)計表”等等與業(yè)務(wù)有關(guān)的內(nèi)容。添加圖片,請點擊【Image Tool】,之后的操作與Text類似。其他靜態(tài)對象操作步驟類似。

    5.2、使用連接

    ?????? 還記得前文提供的(3.2節(jié))配置MySql數(shù)據(jù)庫連接嗎?這里我們將要使用前文配置的連接了。選擇菜單【建立】-【使用動態(tài)連接】開啟可選的動態(tài)連接,選擇任何一個你需要的連接最后【OK】,保存報表,這樣你的報表就使用了這個連接了。

    *【特別提示】此連接必須與以后應(yīng)用程序使用的連接一致。

    5.3、創(chuàng)建SQL查詢語句

    ?????? SQL語句是對任何RDBMS起作用的語言,外部用戶需要使用這些語言管理維護(hù)數(shù)據(jù)庫中的數(shù)據(jù),同樣的,iReport也是需要這么做,我們需要提供查詢數(shù)據(jù)庫的語言-SQL語句,這樣,iReport即可通過此SQL語句獲取數(shù)據(jù),之后組織到報表中并顯示出來,以滿足用戶的需要為目的。

    ?????? 通過菜單【資料來源】-【報表查詢】開啟SQL輸入對話框,并在【Report SQL Query Label中輸入SQL語句如圖:圖中的“Automatically Retrieve Fieldscheckbox和“ReadFieldsButton是確認(rèn)自動獲取還是手動獲取數(shù)據(jù)庫表的可用Fields。單擊【OK】,保存報表。

    5.4、創(chuàng)建字段動態(tài)對象

    報表的動態(tài)對象有變量、參數(shù)、字段,前文提及了他們的概念,這里將要一一講解如何使用。

    字段也就是數(shù)據(jù)庫中的字段,通過菜單【預(yù)覽】-【報表字段】開啟字段的列表(工具條上可以找到相應(yīng)的工具),可以拖放任意字段到報表的任何位置,比如拖動一部分Bug的內(nèi)容字段到detial段(內(nèi)容無關(guān)緊要,只要知道原理)。

    5.5、創(chuàng)建組

    組是一個很重要的概念,一個報表可以多個組,每個組以一個關(guān)鍵字為標(biāo)記,比如希望Bug統(tǒng)計是根據(jù)項目(或是產(chǎn)品)進(jìn)行統(tǒng)計的。那么可以設(shè)立一個項目標(biāo)記的組。如圖:

    組的參數(shù)設(shè)定可以看界面即可理解部分,其中最主要的是“Group expression”,這是必須輸入格式正確的并且存在的字段名稱,本文的“proname”是【字段】中的一個元素。依此類推,建立其他的組對象。每建立一個組,在報表的界面上都會出現(xiàn)該組對應(yīng)的段,如圖:至于他們的意義和容納的內(nèi)容參考“4.4報表結(jié)構(gòu)”,他們是首尾對應(yīng)出現(xiàn)的。(Header和Footer)

    5.6、添加參數(shù)和使用參數(shù)

    我們重申參數(shù)作用,一般是需要外界提供參數(shù)給報表的入口,比如SQL語句的where條件的表達(dá)式。通過【預(yù)覽】-【報表參數(shù)】開啟報表參數(shù)列表對話框(工具條上可以找到相應(yīng)的工具)。如圖:輸入名稱及其他參數(shù)。【ok】,保存報表。

    那么如何使用呢?打開SQL語句對話框,參考“5.3創(chuàng)建SQL查詢語句”,這時候的SQL語句應(yīng)該是:
    SELECT *

    FROM bugs??where proname=$P{ProjectName} order by proname,modulename
    注意其中的紅體字部分,就是把剛才定義的變量運用到SQL語句了。這樣當(dāng)應(yīng)用提供參數(shù)時,只要指定提供給這個參數(shù),那么報表解釋引擎即可替換這些變量然后再執(zhí)行SQL語句,在第二部分提到編程時,會提供參數(shù)設(shè)定代碼。

    5.7、添加變量和使用變量

    變量的定義類似參數(shù),通過【預(yù)覽】-【報表變量】開啟報表變量列表對話框(工具條上可以找到相應(yīng)的工具),如圖,圖中定義的變量的作用是:定義一個Bug的計數(shù)器,數(shù)據(jù)類型是java.lang.Integer,使用Count函數(shù)進(jìn)行統(tǒng)計字段tester,作用范圍是模塊組,也就是統(tǒng)計模塊的Bug量。其中的tester可以改成其他非組對象,比如proname是組對象,就不要用作這里的統(tǒng)計參數(shù)。以上提供的是自定義變量,其實iReport系統(tǒng)還有提供一些內(nèi)嵌(Buildin)的變量,比如頁碼,行記錄數(shù)等,視需要而使用。

    6、最后的報表

    6.1、完成后的報表

    6.2、預(yù)覽報表

    點擊動態(tài)運行報表,出現(xiàn)如圖內(nèi)容:

    7、總結(jié)

    第一部分只是介紹了如何制作一個動態(tài)數(shù)據(jù)報表,其實iReport還有提供很多的特性供開發(fā)人員使用,比如柱狀圖、餅圖、及各種形狀的圖形等,滿足企業(yè)絕大部分應(yīng)用的需求。希望你能繼續(xù)研究并充分利用。????

    ????關(guān)于使用Oracle數(shù)據(jù)庫作為數(shù)據(jù)源的內(nèi)容:提供與使用的Oracle版本對應(yīng)的JDBC驅(qū)動,把驅(qū)動放置在iReportlib目錄,配置數(shù)據(jù)庫的JDBC連接時如圖:其它操作基本沒有區(qū)別。

    8、補(bǔ)充內(nèi)容

    8.1、實現(xiàn)表格

    可以在Detial中加入必要線條實現(xiàn)表格,配合columnFooter、columnHeader、Detial這3個位置實現(xiàn),您可以試試畫線的位置!

    posted on 2006-12-11 19:36 放水老倌 閱讀(780) 評論(0)  編輯  收藏 所屬分類: 打印報表
    主站蜘蛛池模板: 国产精品亚洲片在线| 亚洲精品永久www忘忧草| 一个人免费视频观看在线www| 亚洲av鲁丝一区二区三区| 两性刺激生活片免费视频| 亚洲av无码成人精品区一本二本 | 69精品免费视频| 亚洲第一第二第三第四第五第六| 亚洲伦乱亚洲h视频| 18级成人毛片免费观看| 最新亚洲人成无码网站| 亚洲国产精品成人久久| 成人性生交视频免费观看| 男女一边桶一边摸一边脱视频免费| 久久久久亚洲精品日久生情| 国产午夜鲁丝片AV无码免费| 性色午夜视频免费男人的天堂 | 免费国产污网站在线观看15| 亚洲精品V天堂中文字幕| 午夜亚洲www湿好大| 亚洲国产成人久久综合一区77| 91免费国产自产地址入| 久久免费香蕉视频| 亚洲日本成本人观看| 久久久久亚洲Av无码专| 亚洲精品A在线观看| 成人免费毛片观看| 无码人妻一区二区三区免费看| 在线观看亚洲电影| 亚洲一本之道高清乱码| 亚洲AV永久无码精品| 精品亚洲A∨无码一区二区三区| 免费国产真实迷j在线观看| 无码人妻一区二区三区免费手机 | 国产在线a不卡免费视频| 1000部羞羞禁止免费观看视频| 黄色短视频免费看| 日本高清不卡中文字幕免费| 中国亚洲呦女专区| 亚洲精品乱码久久久久久下载| 亚洲日韩一页精品发布|