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

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

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

    No pains, No gain
    走過、路過、千萬別錯(cuò)過
    posts - 23,comments - 1,trackbacks - 0

    JasperReport?用戶指南(轉(zhuǎn)貼)?

    一.????JasperReports簡介
    JasperReports是一個(gè)強(qiáng)力的報(bào)表產(chǎn)生工具,他有能力描述豐富內(nèi)容到屏幕上、到打印機(jī)或到PDF,?HTML,?XLS,?CSV和XML文件。它完全用Java編寫的,并可在各種Java應(yīng)用(包括J2EE或WEB應(yīng)用)中用來產(chǎn)生動(dòng)態(tài)內(nèi)容。它的主要目的是以一種簡單而靈活的方式來幫助創(chuàng)建導(dǎo)向的頁面。
    JasperReports組織根據(jù)在一個(gè)XML文件中定義的報(bào)表設(shè)計(jì)通過JDBC來接受來自一個(gè)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù).?為了以數(shù)據(jù)來填充報(bào)表,報(bào)表設(shè)計(jì)必須首先被編譯。
    描述報(bào)表設(shè)計(jì)的XML文件的編譯通過執(zhí)行dori.jasper.engine.JasperManager?類暴露的compileReport()方法。
    通過編譯,報(bào)表設(shè)計(jì)被裝載入一個(gè)報(bào)表設(shè)計(jì)對(duì)象中,然后系列化并存儲(chǔ)在磁盤上(dori.jasper.engine.JasperReport)。當(dāng)應(yīng)用程序想以數(shù)據(jù)來填充特定的報(bào)表設(shè)計(jì)時(shí)會(huì)使用這個(gè)已系列化的對(duì)象。事實(shí)上,報(bào)表設(shè)計(jì)的編譯意指描述報(bào)表設(shè)計(jì)的XML文件中定義的所有Java表達(dá)式的編譯。為了檢查報(bào)表設(shè)計(jì)的一致性,在編譯時(shí)做各種檢驗(yàn)。結(jié)果被準(zhǔn)備用來填?充報(bào)表設(shè)計(jì),然后被用來以不同的數(shù)據(jù)集來產(chǎn)生文檔?。
    為了填充一個(gè)報(bào)表設(shè)計(jì),可使用由dori.jasper.engine.JasperManager類暴露的?fillReportXXX()方法。這些方法接受作為參數(shù)的報(bào)表設(shè)計(jì)對(duì)象,或描述特定報(bào)表設(shè)計(jì)對(duì)象的文件,?在一個(gè)系列化的格式中,和一個(gè)從其中接受數(shù)據(jù)填?充報(bào)表的數(shù)據(jù)庫JDBC鏈接。
    結(jié)果是一個(gè)描述準(zhǔn)備用來打印文檔的對(duì)象(dori.jasper.engine.JasperPrint)并可被以一個(gè)系列化格式存儲(chǔ)在磁盤上。?為以后使用,或可被分發(fā)到打印機(jī),到屏幕或可被轉(zhuǎn)換到一個(gè)PDF,?HTML,?XLS,?CSV?或XML文檔。
    二.????JasperReports快速使用流程
    1.????主要類
    運(yùn)行JasperReports?時(shí)使用的主要類
    dori.jasper.engine.JasperCompileManager
    dori.jasper.engine.JasperFillManager
    dori.jasper.engine.JasperPrintManager
    dori.jasper.engine.JasperExportManager
    這些類表現(xiàn)JasperReports引擎的正面(fa?ade),?他們有各種靜態(tài)方法簡化API功能的訪問并用來編譯一個(gè)XML報(bào)表設(shè)計(jì)、填充報(bào)表、打印它或輸出到PDF,?HTML和?XML文件。
    dori.jasper.view.JasperViewer
    這個(gè)可用來觀察產(chǎn)生的報(bào)表。
    dori.jasper.view.JasperDesignViewer
    這個(gè)可用來觀察報(bào)表設(shè)計(jì)。
    2.?編譯報(bào)表設(shè)計(jì)
    報(bào)表設(shè)計(jì)由一個(gè)具有在jasperreport.dtd?文件中定義的結(jié)構(gòu)的XML文件來表現(xiàn)。為了根據(jù)這樣的報(bào)表設(shè)計(jì)來產(chǎn)生報(bào)表,需要編譯它。
    編譯可通過使用由dori.jasper.engine.JasperCompileManager?類暴露的compileReportXXX()方法來完成。
    當(dāng)編譯一個(gè)報(bào)表設(shè)計(jì)時(shí),引擎會(huì)創(chuàng)建一個(gè)包括所有報(bào)表表示式的Java類文件,這個(gè)類是使用Java編譯器編譯并在結(jié)果.jasper文件中存儲(chǔ)字節(jié)碼。?
    默認(rèn)情況下,JasperReports使用目前JVM類路徑來編譯報(bào)表文件(java.class.path系統(tǒng)屬性)并以目前工作目錄作為產(chǎn)生文件的臨時(shí)存放位置。
    為了定制報(bào)表編譯過程,JasperReports充許通過提供一個(gè)值給系統(tǒng)屬性jasper.reports.compile.class.path來覆蓋默認(rèn)行為,這將被用報(bào)表類編譯的類路徑,賦一個(gè)值給系統(tǒng)屬性jasper.reports.compile.temp,這個(gè)將被用作臨時(shí)目錄?
    XML驗(yàn)證默認(rèn)是打開的,可通過設(shè)定系統(tǒng)屬性jasper.reports.compilation.xml.validation?為false來關(guān)閉。
    如果你想使用一個(gè)不同的Java編譯器,如jikes,你可以使用jasper.reports.compiler系統(tǒng)屬性來提供編譯器程序的名字。在你使用jikes情況下,請(qǐng)確信你將rt.jar文件加入到類路徑中,可通過上面提及的系統(tǒng)屬性?jasper.reports.compile.class.path。?
    You?can?see?some?of?those?in?action?in?the?supplied?"webapp"?samples.?Check?the?jsp/compile.jsp?and?WEB-INF/classes/servlets/CompileServlet.java?files.
    3.?觀察報(bào)表設(shè)計(jì)?
    報(bào)表設(shè)計(jì)可通過使用dori.jasper.view.JasperDesignViewer應(yīng)用程序來察看。在其main()方法中,它接收那些包括報(bào)表設(shè)計(jì)的文件的名字來觀看。這可以是XML文件或編譯過的報(bào)表設(shè)計(jì)。?
    4.?填充報(bào)表?
    一個(gè)編譯過的報(bào)表設(shè)計(jì)可通過調(diào)用dori.jasper.engine.JasperFillManager?類的fillReportXXX()方法來產(chǎn)生報(bào)表。
    5.?觀看報(bào)表?
    產(chǎn)生的報(bào)表可通使用dori.jasper.view.JasperViewer應(yīng)用來觀看。在其main()方法中它接受包括報(bào)表的文件的名字來觀看。
    6.?打印報(bào)表
    產(chǎn)生的報(bào)表可使用doriJasper.engine.JasperPrintManager?類暴露的靜態(tài)方法printReport(),?printPage()或printPages()來打印。
    7.導(dǎo)出到PDF,?HTML?或XML格式
    在已經(jīng)填充一個(gè)報(bào)表后,我們也可以通過使用dori.jasper.engine.JasperExportManager類的exportReportXXX()方法來以?PDF,?HTML或XML格式導(dǎo)出它。
    三.????技術(shù)指南簡述
    1.報(bào)表設(shè)計(jì)
    一個(gè)報(bào)表設(shè)計(jì)描述一個(gè)被JasperReports引擎用來分發(fā)動(dòng)態(tài)內(nèi)容到打印機(jī),到屏幕或到WEB的模板。存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)根據(jù)報(bào)表設(shè)計(jì)被組織達(dá)到準(zhǔn)備到打印,頁面導(dǎo)向文檔。
    報(bào)表設(shè)計(jì)是在XML文件中定義并且必有一個(gè)特別的結(jié)構(gòu)。此結(jié)構(gòu)是在一個(gè)由JasperReports?引擎一起提供的DTD文件中聲明的(XML類型定義文件jasperreport.dtd)。然后編譯XML文件,為了在后面的報(bào)表填充操作中使用他們。
    為了創(chuàng)建一個(gè)簡單的報(bào)表設(shè)計(jì),我們不得不編輯一個(gè)有以下結(jié)構(gòu)的XML文件:
    <?xml?version="1.0"?>?
    <!DOCTYPE?jasperReport?PUBLIC?"-//JasperReports//DTD?Report?Design//EN"?
    "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">?
    <jasperReport?name="name_of_the_report"?...?>?
    ...?
    </jasperReport>
    2.參數(shù)
    參數(shù)是傳入到報(bào)表填充操作的對(duì)象引用
    參數(shù)可的構(gòu)造SQL查詢
    3.數(shù)據(jù)源?
    JasperReports使用一個(gè)叫JRDataSource的接口來支持各種類型的數(shù)據(jù)源
    4.字段
    報(bào)表字段代表從數(shù)據(jù)源映射數(shù)據(jù)到報(bào)表產(chǎn)生程序的唯一途徑
    5.表達(dá)式
    表達(dá)式是JasperReports的強(qiáng)大特點(diǎn),它們可被聲明的報(bào)表變量使用來執(zhí)行各種計(jì)算。
    6.變量
    報(bào)表變量是才一個(gè)表達(dá)式開始時(shí)建立的特殊的對(duì)象。
    變量可以在相應(yīng)的表達(dá)式中執(zhí)行內(nèi)置類型的計(jì)算,如:count,sum,average,lowest,highest等
    7.報(bào)表區(qū)
    當(dāng)我們建立一個(gè)報(bào)表設(shè)計(jì)時(shí),我們需要定義報(bào)表區(qū)的內(nèi)容和布局。報(bào)表設(shè)計(jì)的整個(gè)結(jié)構(gòu)基于以下報(bào)表區(qū)<title>,?<pageHeader>,?<columnHeader>,?<groupHeader>,?<detail>,?<groupFooter>,?<columnFoter>,?<pageFooter>,?<summary>.
    8.組
    組代表了在報(bào)表上組織數(shù)據(jù)的一個(gè)靈活的方式,當(dāng)我們填充一個(gè)報(bào)表時(shí),JasperReports引擎可字段檢測(cè)組表達(dá)式<groupFooter>?和?<groupHeader>等是否完整。
    9.字體和Unicode支持
    你可以用任何語言來創(chuàng)建你的報(bào)表。
    10.?Scriptlets
    Scriptlets是java代碼序列,在每次報(bào)表事件發(fā)生時(shí)被執(zhí)行。通過?scriptlets,用戶可以影響被報(bào)表變量存儲(chǔ)的值。
    當(dāng)我們創(chuàng)建一個(gè)JasperReports?scriptlet類時(shí),開發(fā)者要實(shí)現(xiàn)或重載幾個(gè)方法,象:beforeReportInit(),?afterReportInit(),?beforePageInit(),?afterPageInit(),?beforeGroupInit(),?afterGroupInit()等,這些方法當(dāng)填充報(bào)表時(shí)在適當(dāng)?shù)臅r(shí)候被報(bào)表引擎調(diào)用。
    11.子報(bào)表
    子報(bào)表是報(bào)表產(chǎn)生工具的重要特征,它允許更復(fù)雜報(bào)表的創(chuàng)建并簡化設(shè)計(jì)工作。
    子報(bào)表在創(chuàng)建主從報(bào)表時(shí)非常有用。

    1??首先看看
    ???http://plateau.sicool.com/main.html上的三篇
    ???iReport和Jasperreport整合開發(fā)報(bào)表向?qū)Вㄒ唬ǘㄈ?br />???看完理解并自己運(yùn)行一下,OK,你入門了
    2??去找一份TheJasperReportsUltimateGuide.1.0.pdf,看完之后你就能
    ???了解JasperReport生成的基本過程及原理
    3??當(dāng)然是Java研究的這個(gè)論壇
    ???http://www.javaresearch.org/forum/forum.jsp?column=316&start=0&thRange=15
    ???多往后翻翻看看帖子,很多你要問的問題都能找到答案,還有好幾篇前輩的理會(huì)等等?
    ???都是寶貴的經(jīng)驗(yàn)
    4??JasperReport最好的資料是什么??
    ???解壓jasperreports-0.5.0-project.zip?后
    ???目錄jasperreports\demo\samples下的例子,看看這些例子是你關(guān)于這個(gè)報(bào)表工具提升?
    ???能力的最好最快的方式,下面我簡要說一下各個(gè)例子說的是什么以及有什么用
    ????alterdesign?該例子演示了報(bào)表編譯后,在報(bào)表展現(xiàn)的時(shí)候如何動(dòng)態(tài)的控制其中的元素
    ????????????????比如讓某一個(gè)矩形變色或其他
    ????antcompile??演示如何讓?ant?來編譯
    ????chart???????演示了如何在報(bào)表中添加圖像,JasperReport是用Scriptlet的方式
    ????????????????往報(bào)表中添加圖像,而Scriptlet是調(diào)用也是開源的jfreechart的Api來
    ????????????????生成圖形,去jfreechart看一下,該工具能的圖形生成能力也很強(qiáng)
    ????datasource??演示了如何在報(bào)表中使用各種數(shù)據(jù)源,能夠使用beanarray
    ????????????????beancollection,也可以用自定義的數(shù)據(jù)源,只要繼承了JRDataSource的
    ????????????????兩個(gè)接口,這個(gè)能給用戶提供非常大的靈活性,報(bào)表的數(shù)據(jù)不用局限于一
    ????????????????條Sql語句,也可以使用存儲(chǔ)過程,對(duì)生成報(bào)表中的數(shù)據(jù)也可以排序,二
    ????????????????次檢索,等等
    ????fonts???????各種字體的演示
    ????horizontal??演示了水平分欄的報(bào)表,演示報(bào)表中分了三欄,其中還用到了
    ????????????????textFieldExpression,就像if語句的效果來選擇輸出的內(nèi)容
    ????hyperlink???演示了各種樣式的鏈接
    ????images??????演示了如何在報(bào)表中加入圖像以及圖像的顯示方式
    ????jasper??????演示了分組分欄的報(bào)表,演示中用了2次group
    ????jcharts?????演示了調(diào)用另一個(gè)開源的API?jcharts來往報(bào)表中加入分析圖形,原理同
    ????????????????上chart,如果jfreechart都還不能滿足你分析圖形的要求,那到j(luò)charts
    ????????????????里找找看吧,說不定有
    ????landscape???演示橫向的報(bào)表
    ????nopagebreak?演示比如在IE中不分頁的方式打印出報(bào)表的內(nèi)容,通過這個(gè)演示也可以
    ????????????????了解報(bào)表輸出如何配置參數(shù)
    ????noreport????演示了如何直接通過java程序生成JasperPrint對(duì)象來輸出
    ????noxmldesign?演示了如何直接通過java程序生成JasperDesign對(duì)象來動(dòng)態(tài)的生成報(bào)
    ????????????????表,根據(jù)這個(gè)例子,用戶可以作出自定義選列的報(bào)表,當(dāng)然比較麻煩,
    ????????????????而且肯定自己要補(bǔ)充他的API庫
    ????????????????(JasperReport真是強(qiáng)大啊,呵呵)????
    ????pdfencrypt??演示了pdf的輸出方式,可以給pdf文件加密碼,其實(shí)就是pdf輸出方式的
    ????????????????參數(shù)配置,具體有那些參數(shù)可配置,去看看API吧
    ????printservice演示了如何直接打印報(bào)表
    ????query???????演示了如何讓查詢的sql動(dòng)態(tài)起來,比如你可以通過一個(gè)Jsp頁面?zhèn)?br />????????????????報(bào)表的sql的where條件,order條件,甚至整個(gè)sql語句
    ????rotation????演示了文字縱向顯示的報(bào)表
    ????scriptlet???演示了如何繼承JRDefaultScriptlet,并加入自己的處理語句,這個(gè)功能
    ????????????????可是很強(qiáng)大的哦,看看這些接口
    ????????????????beforeReportInit()??afterReportInit()??beforePageInit()
    ????????????????afterPageInit()??beforeColumnInit()??afterColumnInit()?
    ????????????????beforeGroupInit(String?groupName)
    ????????????????afterGroupInit(String?groupName)??
    ????????????????看看這些名字就知道你能完成那些功能,比如顯示一列數(shù)據(jù)后,馬上跟
    ????????????????上該列數(shù)據(jù)的分析圖形,當(dāng)然你也可以加上自己的方法并在報(bào)表中調(diào)用
    ????shapes??????演示了JasperReport中自帶的圖形,及能配置的參數(shù)
    ????????????????當(dāng)然你也能繼承或者覆寫JasperReport中的Api生成你要的圖形,
    ????stretch?????演示了如何處理報(bào)表中數(shù)據(jù)拉伸以及帶來周圍的線及框的拉伸,
    ????????????????你能了解到雖然黑框式表格不是JasperReport中缺省的展現(xiàn)方式,
    ????????????????但在JasperReport中不難實(shí)現(xiàn)
    ????subreport???演示了子報(bào)表,還告訴你一個(gè)報(bào)表中可以有n個(gè)子報(bào)表,子報(bào)表中還可以
    ????????????????嵌套子報(bào)表
    ????tableofcontents??演示了如何生成一個(gè)有目錄的,復(fù)雜的報(bào)表
    ????unicode?????演示了各種?字符編碼
    ????webapp??????演示了如何把報(bào)表放到一個(gè)JavaWeb項(xiàng)目中,可以用Jsp?Servlet
    ????????????????applet,筆者做了一個(gè)
    ????????????????有參數(shù)頁面,可以選擇html?pdf?applet輸出方式的報(bào)表,有興趣的?
    ????????????????我可以在后面放上代碼
    5??比上面更好的資料是什么,就是JasperReport的源代碼,看懂源代碼,JasperReport
    ???就是在你腦子里的了,你想干什么都行了,優(yōu)化代碼,覆寫,繼承他的類,實(shí)現(xiàn)個(gè)性
    ???化的功能,甚至你可以參考他的思想,升華一下,做一個(gè)你自己的報(bào)表







    ?

    posted on 2006-09-12 11:45 一縷青煙 閱讀(498) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲欧洲久久精品| 日本免费电影一区| 亚洲AV无码久久精品蜜桃| 免费观看亚洲人成网站| 亚洲精品无码一区二区| 一级做a爰片性色毛片免费网站| 毛片免费vip会员在线看| 国产亚洲精品影视在线产品 | 久久午夜夜伦鲁鲁片无码免费| 在线观看免费视频资源| 国产又黄又爽又刺激的免费网址| 亚洲精品无码久久久久YW| 永久黄网站色视频免费观看| 亚洲国产精品一区二区久久| 99在线观看免费视频| 久久精品夜色噜噜亚洲A∨| 国产精品综合专区中文字幕免费播放| 久久99青青精品免费观看| 亚洲成AV人片在线观看WWW| 免费人妻无码不卡中文字幕系 | 日本xxwwxxww在线视频免费| 国产成人精品亚洲| 国产午夜亚洲精品理论片不卡 | 中美日韩在线网免费毛片视频| 77777亚洲午夜久久多人| 亚洲午夜免费视频| 最新亚洲精品国偷自产在线| 久久aⅴ免费观看| 亚洲精品123区在线观看| 亚洲AV中文无码乱人伦在线视色| 亚洲精品久久无码av片俺去也| 亚洲福利精品一区二区三区| a级毛片免费完整视频| 伊人婷婷综合缴情亚洲五月| 一级毛片全部免费播放| 亚洲色大情网站www| 我要看WWW免费看插插视频| 一级黄色免费网站| 亚洲国产美女在线观看| 亚洲精品国产电影| 成视频年人黄网站免费视频|