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.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
凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。