FineReport 報(bào)表工具的使用與集成 一直以來,,報(bào)表功能的開發(fā)都是應(yīng)用系統(tǒng)開發(fā)的重點(diǎn)難點(diǎn)。近年來,,一些基于Excel 的報(bào)表工具的涌現(xiàn)使得報(bào)表開發(fā)變得越來越簡便,,極大地減輕了系統(tǒng)開發(fā)人員的負(fù)擔(dān)。本文將介紹一款優(yōu)秀的報(bào)表開發(fā)工具———FineReport 的基本使用及其與系統(tǒng)工程的集成方法,。 一、FineReport 介紹 FineReport 報(bào)表軟件是一款純Java 編寫的企業(yè)級(jí)Web 報(bào)表軟件工具,。它能夠全面支持主流的B/S 架構(gòu)以及傳統(tǒng)的C/S 架構(gòu),,部署方式簡單而靈活。FineReport提供了易用且高效率的報(bào)表設(shè)計(jì)方案,,采用主流的數(shù)據(jù)雙向擴(kuò)展,、真正無編碼形式設(shè)計(jì)報(bào)表;具備強(qiáng)大的報(bào)表展示功能,并且提供完善的報(bào)表權(quán)限管理,、報(bào)表調(diào)度管理,;具有完備的報(bào)表填報(bào)功能,支持多級(jí)匯總填報(bào),。 利用這一報(bào)表工具,,用戶即可把企業(yè)的業(yè)務(wù)模型、數(shù)據(jù)分析變成實(shí)際可操作的信息系統(tǒng),。利用報(bào)表展現(xiàn),、填報(bào)、匯總,、統(tǒng)計(jì)分析,、打印輸出等功能搭建出輕量級(jí)企業(yè)報(bào)表平臺(tái)。特別是采用主流的數(shù)據(jù)雙向擴(kuò)展,、多源分片,、純拖拽等方式來進(jìn)行報(bào)表設(shè)計(jì),讓報(bào)表設(shè)計(jì)人員 無需掌握復(fù)雜的代碼編寫技能,,也可以隨時(shí)根據(jù)需要設(shè)計(jì)出符合業(yè)務(wù)邏輯的報(bào)表,,滿足報(bào)表使用者的需求,無形中也降低了企業(yè)的運(yùn)營成本,。 FineReport 由設(shè)計(jì)模板的設(shè)計(jì)器和解析模板的服務(wù)器組成,。 (一)設(shè)計(jì)器 FineReport 設(shè)計(jì)器的界面(如圖1 所示)簡單易用,熟悉Microsoft Excel 的用戶不需任何額外學(xué)習(xí)成本,。一般用戶也能在閱讀FineReport 提供的幫助文檔后快速掌握設(shè)計(jì)器的使用,。 (二)服務(wù)器 FineReport 服務(wù)器主要用來讀取和解析設(shè)計(jì)器制作好的模板,并將模板轉(zhuǎn)換成html 頁面,,方便用戶通過IE, Firefox 等瀏覽器查看,、修改和打印數(shù)據(jù)。同時(shí)FineReport 服務(wù)器內(nèi)置了強(qiáng)大的緩存機(jī)制和集群機(jī)制,,支持超大數(shù)據(jù)量的運(yùn)算和大數(shù)量用戶的并發(fā)處理,,并創(chuàng)新性地采用flash 技術(shù),完美支持零客戶端精確打印,。 二,、FineReport 報(bào)表設(shè)計(jì)流程 使用FineReport 設(shè)計(jì)器進(jìn)行報(bào)表設(shè)計(jì)大致可分成如下幾個(gè)步驟。 (一)配置數(shù)據(jù)源 在報(bào)表設(shè)計(jì)之前,,首先要添加報(bào)表所展示的數(shù)據(jù)來源,,數(shù)據(jù)源并不一定是數(shù)據(jù)庫,也可以是程序數(shù)據(jù)源,、文本數(shù)據(jù)源等,。 (二)新建報(bào)表 在新建報(bào)表時(shí),,可以選擇使用報(bào)表設(shè)計(jì)向?qū)В部梢孕陆瞻椎淖杂蓤?bào)表,,向?qū)傻氖菢?biāo)準(zhǔn)的分組表或者交叉表,,生成后的報(bào)表可以自由修改。報(bào)表主設(shè)計(jì)界面是一個(gè)類似Excel 的表格,。 (三)添加數(shù)據(jù)源 數(shù)據(jù)源的添加可以在新建報(bào)表之前,,也可以在新建報(bào)表之后。數(shù)據(jù)源列表會(huì)顯示在左側(cè)的數(shù)據(jù)源面板當(dāng)中,,用戶可以直接選中并拖拽數(shù)據(jù)列到單元格中,。 (四)設(shè)置數(shù)據(jù)記錄擺放的方向 通常一個(gè)數(shù)據(jù)列會(huì)返回多條記錄,也就是一個(gè)單元格綁定了一個(gè)數(shù)據(jù)列,,但這個(gè)數(shù)據(jù)列中有多行數(shù)據(jù),。所以要定義這些數(shù)據(jù)是從上到下進(jìn)行列表,還是從左到右進(jìn)行列表,。一般來說,,需要匯總的數(shù)據(jù),可以對(duì)其進(jìn)行不擴(kuò)展的設(shè)置,。這是因?yàn)閰R總的單元格通常是作為其他單元格的附屬格子來放置的,。 (五)設(shè)置數(shù)據(jù)的類型 當(dāng)單元格擴(kuò)展時(shí),無論數(shù)據(jù)是縱向放置還是橫向放置,,都可以從數(shù)據(jù)顯示的角度進(jìn)行分組,,即將數(shù)據(jù)列中所有相同內(nèi)容的記錄進(jìn)行合并;也可以進(jìn)行數(shù)據(jù)列表,,即將數(shù)據(jù)列中的所有數(shù)據(jù)記錄擴(kuò)展出來,,無論數(shù)據(jù)記錄是否重復(fù)。 (六)設(shè)置單元格之間的關(guān)系 除了可以綁定數(shù)據(jù)列,,FineReport 的單元格在綁定數(shù)據(jù)之后,,格子之間并非平行的關(guān)系,而是附屬關(guān)系,,這種附屬關(guān)系可以是默認(rèn)的,,也可以人為指定。 當(dāng)一個(gè)格子默認(rèn)不附屬于任何格子或者我們指定它不屬于任何格子時(shí),,這個(gè)格子就是頂級(jí)的格子,,或者可以叫做首格。首格的擴(kuò)展與其他的格子沒有關(guān)系,,而且這個(gè)首格后面的格子將默認(rèn)作為這個(gè)首格的附屬格,。這時(shí)候就是所有將格子分成幾塊相互沒有關(guān)系的格子組,達(dá)到報(bào)表分片的效果,。 三、FineReport 報(bào)表與Tomcat 服務(wù)器的集成 由于FineReport 提供的報(bào)表服務(wù)器其實(shí)就是一個(gè)Servlet,所以通過簡單的配置,,就可以將FineReport 設(shè)計(jì)的報(bào)表集成到Tomcat 服務(wù)器中,。 假設(shè)已存在一個(gè)名為Test 的工程和一個(gè)設(shè)計(jì)好的報(bào)表report1.cpt,下面介紹如何將report1.cpt 這個(gè)報(bào)表集成到Test 工程中,。 (一)復(fù)制文件 將%FineReport_HOME%\WebReport\WEB-INF 路徑下面的classes,,lib,reportlets,,resources 四個(gè)文件復(fù)制到%Tomcat_HOME % \webapps\Test\WEB-INF 下,。如果Test 工程中已存在class,lib 文件夾,,則將%FineReport_HOME%\WebReport\WEB-INF 路徑下面的classes,lib 文件夾的文件拷貝到%Tomcat_HOME% \webapps\Test\WEB-INF 下的class,,lib 文件夾中。 (二)整合web.xml 文件 1. 在% Tomcat_HOME% \webapps\Test\WEB -INF目錄下的web.xml 中找到的信息(如圖2 所示),。 2. 在%FineReport_HOME%/WebReport/WEB -INF下的web.xml 中找到的信息(如圖3 所示),。
3. 將%FineReport_HOME%/WebReport/WEB -INF下的web.xml 中找到的內(nèi)容復(fù)制到%Tomcat 5.5%\webapps\Test\WEB-INF 目錄下的web.xml 中,放在<servlet-mapping> 標(biāo)志之前,,</servlet> 標(biāo)志之后,。 (三)瀏覽報(bào)表 重新啟動(dòng)Tomcat,啟動(dòng)瀏覽器,,在地址欄輸入http://localhost:8080/Test/ReportServer reportlet=/com/test/ report1.cpt,,在瀏覽器中可以看到以下界面(如圖4 所示)。 四,、總結(jié) 從以上介紹可以看出,,使用FineReport 工具進(jìn)行報(bào)表開發(fā)的過程簡單、快捷,,同時(shí)FineReport 提供與大多數(shù)主流服務(wù)器兼容的集成方法,,確保系統(tǒng)工程的整體性。由于篇幅有限,,FineReoport 的功能未能完全介紹,,有待廣大讀者在實(shí)際使用過程中進(jìn)一步發(fā)掘。 |
|