《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 基于Web的Java报表工具的开发与设计实现

基于Web的Java报表工具的开发与设计实现

2008-12-22
作者:刘治国
1 引言
??? 隨著Internet技術的飛速發展,基于Web的應用軟件正逐步取代傳統的C/S模式軟件成為當今應用軟件的主流。原來C/S模式下簡單的報表問題,在Web軟件中卻成了瓶頸。如何適應網絡技術,讓報表工具在信息傳輸迅速的Internet上發揮更大的作用。成為了報表工具新的發展方向。
??? 本文基于Crystal Report 報表工具提供的底層Java SDK 接口函數" title="接口函數">接口函數,分析了基于web的報表的具體應用,設計了一個Web報表工具。具體實現了輸出格式轉化;報表數據的在線查詢;圖表展示以及報表的定制;Email發送;報表打印等功能。
2 Crystal Report報表工具簡介
??? Crystal Report報表工具是一個被廣泛使用的企業級的報表設計,報表輸出的工具。它提供了數據的報告、分析、信息傳遞以及與客戶的交互式功能。
2.1 Crystal Report簡介
??? Crystal Report主要有Crystal Report設計器,Crystal Report應用服務器" title="應用服務器">應用服務器,Crystal Report分析器,Crystal Report Java API接口。
??? 設計器:設計器支持絕大多數數據庫,包括 SQL Server、Oracle、DB2等;能連結任何數據源并使用各種ADO與OLE DB連結功能。設計器支持簡單圖表與圖案以及多層嵌套子報表、交叉報表等各種類型報表。 同時可以自行設定報表的外觀,如加上圖片、改變形式、色彩或字型等。可以讓一般的報表制作如排序和過濾等工作變得更快更容易。還支持報表打印。可以實現復雜的報表計算、篩選、排序等功能。設計器可以生成各種圖表,還可以自定義擴充函數和變量來滿足報表分析的要求。
??? 應用服務器:是Web報表的執行核心,將所設計的報表與Web應用程序的緊密集成。主要用于報表和客戶端" title="客戶端">客戶端的交互。應用服務器負責解析報表數據以及報表模板和底層數據庫的信息轉化。同時還提供了許多的JAVA API用于客戶端的開發。
2.2 Crystal Report的體系結構
????Crystal Report的體系結構能夠很好的反映出報表的設計和開發過程Crystal Report報表工具的開發步驟如下:
首先在設計器里用JDBC/ODBC創建與相應數據庫的連接,設置數據源和查詢語句,顯示并預覽取得的數據。
接著在設計器里設計報表模板,對表頭,表尾,數據區的具體設置。將預先取得的數據與報表模板進行綁定。
將設計好的報表以.rpt文件存儲在指定目錄里,這是也可以將其轉化為別的文件形式,如xml,pdf,work等。
最后在Web上發布所設計的報表,啟動RAS用于解釋報表的執行。
??? 其體系結構如圖 1 所示:

?

3 We3??? Web報表管理器的設計與實現" title="設計與實現">設計與實現
Web報表????管理器采用Crystal Report報表應用服務器提供的Java SDK接口函數,具體實現了輸出格式轉化;數據的布爾查詢;圖表展示以及報表的定制;Email發送;報表打印等功能。在具體實現上,用jsp+javabean結合RAS Java SDK技術實現? 術整個WEB報表工具設計。
3.3 Web報表功能的設計與實現
Web報表功能是基于WEB的報表在展示上的不同功能的實現,這些功能都是基于Web/Java來實現的。功能的設計是基于Crystal Report 報表工具提供的底層Java SDK 接口函數。首先對Crystal Report應用服務器的Java SDK結構進行分析。
3.3.1 RAS Java SDK分析
報表應用服務器Java JDK提供了實現基于WEB的報表設計功能,從簡單的報表生成,報表修改,到復雜的報表定制功能。Crystal Report報表應用服務器本身就是一個c/s結構的系統,它有RAS 服務器(報表應用服務器)和SDK組成。SDK提供與RAS服務器交互的接口。RAS服務器則與Web應用服務器通信。下圖是RAS Java JDK 的結構圖。


RSA SDK 有許多包含接口和類的Java包組成。SDK的結構是一個MVC體系。圖中的 application packages 由controllers 類構成,用來管理數據。在application packages里還有ReportClientDocument對象。ReportClientDocument對象是RSA SDK 創建并修改的報表文檔。Data package和definition package用來定義model。View實現model里的數據展現功能。View 可以直接訪問數據,也可以通過controllers 類來訪問。通過controllers 類來訪問數據可以實現數據的修改操作。
3.3.2功能的具體設計與實現
?? 通過RAS SDK提供的功能,Web報表功能主要實現輸出格式轉化;報表數據的在線查詢;圖表展示以及報表的定制;Email發送;報表打印;等功能。下面是詳細實現:
輸出格式轉化:主要實現將Web上的以特定格式顯示的報表輸出為RTF,CSV,PDF,HTML,Excel, Word等格式。以便于報表文件的存儲和管理。在輸出格式轉化上用到的主要類有exportoptions 包下的ExportFormatOptions,ExportOptions以及ReportExportControl等。轉化為Word格式的實現為:(部分代碼)
//設置報表名和報表路徑
report =request.getParameter("rptName");
String rptPath = "C:\\Program Files\\Crystal Decisions\\Report Application Server 9\\Reports";
//創建RTFWordExportFormatOptions對象。
RTFWordExportFormatOptions? wordExpOpts;
wordExpOpts = new RTFWordExportFormatOptions();
//創建ExportOptions對象,設置word輸出選項及格式類型為word。
ExportOptions exOpts = new ExportOptions();
exOpts.setFormatOptions(wordExpOpts);
//創建ReportExportControl對象,加載" title="加載">加載報表文件。
? com.crystaldecisions.report.web.viewer.ReportExportControl expViewer ;
? expViewer= new com.crystaldecisions.report.web.viewer.ReportExportControl();
? expViewer.setReportSource(rptPath + "\\" + report);
? //加載ExportOptions對象。
? expViewer.setExportOptions(exOpts);
? //輸出并顯示word報表。
expViewer.processHttpRequest(request, response, getServletContext(), null);
? expViewer.dispose();
報表數據的在線查詢:主要有數據刷新和布爾查詢兩個部分。用到的類有application package; reportsource; lib等;其數據刷新和布爾查詢的實現如下:(部分代碼)
??? //與數據庫的交互要通過ReportServerControl對象。
serverControl.setReportSource(clientDoc.getReportSource());
serverControl.setEnableLogonPrompt(false);
serverControl.processHttpRequest(request, response, getServletConfig(). out);
//設置數據庫連接和讀取數據信息。
??? connInfos = new ConnectionInfos();
?connInfos = serverControl.getDatabaseLogonInfos();
?int size = connInfos.size();
?for (int x=0; x?????? ?iConnInfo = connInfos.getConnectionInfo(x);???
? iConnInfo.setUserName(uid);??
iConnInfo.setPassword(pwd);??}
??? //創建viewer對象瀏覽刷新數據。
??? CrystalReportViewer htmlViewer = new CrystalReportViewer();
??? htmlViewer.setDisplayToolbar(true);
??? htmlViewer.setReportSource(serverControl.getReportSource());
htmlViewer.setDatabaseLogonInfos(connInfos);
//從客戶端得到查詢條件,設置查詢變量。
??? String newSelFormula = "{"+s1+"}" + " " + s2 + " " + "\""+s3+"\"";
??? htmlViewer.setSelectionFormula(newSelFormula);
htmlViewer.processHttpRequest(request, response, getServletConfig().out)
圖表展示:用于對報表中的數據通過各種圖表(par, line, bar)的形式進行形象化的描述,以便于更方便的對數據進行分析比較。其實現如下:(部分代碼)
//圖表顯示主要進行圖表條件字段和數據字段的設置。
??? //創建chartCondFlds對象和 chartDataFlds對象。
Fields chartCondFlds = new Fields();
Fields chartDataFlds = new Fields();
CDef.setConditionFields(chartCondFlds);
CDef.setDataFields(chartDataFlds);
//創建Chart對象并加載Cdef對象。
??? ChartObject Chart = new ChartObject();
??? Chart.setChartDefinition(CDef);
??? //加載圖表類型(par, line, bar)和位置(head, tail)等。
ChartStyleType = ChartStyleType.from_int(ChartStyleType._bar);
ChartPlacement = ChartPlacement.from_string(Placement);
??? ChartSection =(Section)Doc.getReportDefController().getReportDefinition()
??? Doc.getReportDefController().getReportObjectController()
add((IReportObject)Chart,(ISection)ChartSection,1);
報表的定制:主要用來實現對web報表的定制操作,如報表表頭,表尾的修改,text文本的修改,報表不同圖表的選擇修改等。Email功能的設計采用java提供的sendmail開發包設計;而打印功能則采用Crystal Report提供的打印工具包實現。
4 結束語
本文是基于Crystal Report 報表工具提供的底層Java SDK 接口函數,分析了基于web的報表的具體應用,設計了一個Web報表工具。在Web報表工具的實現上還有一些方面沒有考慮到,如web頁面的表現,負載均衡以及工具功能的完善問題等。下面的工作要進一步解決上述問題。
DESIGN AND IMPLEMENT OF THE REPORT TOOL BASED ON JAVA/ WEB
????????????????????????????????????? Liu Zhi-guo
(Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang, Liaoning 110004)
Abstract: With the rapid development of the Internet. Applications based on the Web are taking place of the traditional applications based on the C/S, which takes the reports based on the web in trouble. This paper designs and implements a Web_based report tool by the Java SDK in the Crystal Report tools, which provides the format export, print, Email, query, chart and customizing report.
Key words: Crystal Report, Web Report, Java SDK, RAS

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产美女在线精品免费观看| 亚洲av综合色区| 国产美女精品久久久v| 久久国产午夜精品理论片最新版本 | 久久精品视频网站| 国产精品美女免费视频| 免费在线观看日韩视频| 国产精品日韩专区| 欧美激情在线一区| 日本中文字幕成人| 日韩免费中文专区| 国产有码在线一区二区视频| 日韩精品无码一区二区三区| 91久久久久久久一区二区| 黄色三级中文字幕| 国产精品久久久久久久久久久久| 国产人妻互换一区二区| 国产精品美女xx| 伊人久久大香线蕉综合75| y97精品国产97久久久久久| 九九久久国产精品| 国产一区二区视频免费在线观看 | 亚洲精品日韩av| 久久久免费精品视频| 99久久伊人精品影院| 国产精品福利在线| 国产美女精品视频| 亚洲a在线观看| 中文字幕日韩精品一区二区| 国产一区二区在线免费| 日韩中文字幕不卡视频| 欧美久久综合性欧美| 精品国产福利| 日韩精品无码一区二区三区免费| 国产精品偷伦免费视频观看的| 国产一区二区视频免费在线观看| 人妻av无码专区| 少妇免费毛片久久久久久久久| 日韩欧美一区三区| 啊v视频在线一区二区三区| 国产在线精品一区|