报表设计器开发Word文档下载推荐.docx
《报表设计器开发Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《报表设计器开发Word文档下载推荐.docx(66页珍藏版)》请在冰豆网上搜索。
这些软件的基本特征是单数据源、条带式(BAND)分组统计模型,通过控件拖拽方式绘制报表,在不编码的情况下能完成简单地行式(分组)报表和单片交叉报表,数据集中在数据库中,可以共享。
但这一时期的用户需求已经与前一阶段的需求大为不同。
用户希望放在数据库中的数据能以自己熟悉的方式展现(复杂的表样、统计运算等),而这些报表软件的数据模型源于国外的报表习惯,解决复杂表样的方法并不好,复杂的统计运算也要求开发人员编写大量的程序代码,导致报表开发时间太长,后期的维护工作量也很大。
随着B/S应用逐步取代C/S,市场上对Web报表的要求越来越强烈,C/S时期的报表工具纷纷进行了若干改进与加强,普遍支持B/S结构,新的报表软件也如雨后春笋一样不断出现。
在报表工具的发展过程中,还有一类特殊的表格式产品,最著名有ormula1和华表。
这种类Excel的工具,展现能力非常强,但是因为没有数据模型,导致其数据处理能力几乎为零,程序员需要按格编写代码往里填数。
相比较分组式报表工具,类Excel工具能彻底解决复杂报表的样式问题,所以在实际应用中它一直是与分组报表互补的一类产品。
SWT/JFACE是Eclipse推出优秀的JAVA图形API。
RCP,也就是富客户端,是在Eclipse3.0之后分离出来的一个平台。
RCP技术其实就是插件开发,可以在一个很小的模板上加入各种插件,扩展性能。
现在RCP已经成为Eclipse开源项目的一个亮点,在国际上广泛的使用大量PCR来开发桌面应用程序。
在RCP平台上,可以使用Eclipse的插件机制来快速开发独立应用的桌面应用,从而轻松拥有Eclipse的界面结构和界面元素,节省了很多开发精力。
运用SWT/Jface和RCP技术来开发报表,是当前报表开发的主流方向。
一方面,SWT/Jface可以提供优秀的图形界面,克服JAVA桌面应用界面难看的缺陷;
另一方面RCP技术可以提高开发效率。
联合运用SWT/Jface和RCP技术,可以开发出优秀的报表产品。
第二章开发技术及环境
2.1软件环境
本系统的开发环境:
操作系统:
Windowserver2003标准版
应用服务器:
Tomcat5.5
开发平台:
eclipse3.3;
jdk1.5
2.2主要开发技术
SWT/Jface
SWT(StandardWidgetToolkit)是标准控件工具集。
Jface意为JAVAface。
由于SUN的AWT/SWING技术在与本地界面融合方面存在缺陷,因此IBM开发了SWT,使得界面风格和本地保持一致。
而Jface是SWTa的扩展包,采用MVC的设计模式,使用更加方面。
RCP
RCP(RichClientPlatform)意为富客户平台。
在RCP平台上,可使用Eclipse的插件机制来快速开发独立应用的桌面应用,从而轻松拥有Eclipse的界面结构和界面元素,节省了很多开发精力。
Dom4j
Dom4j(DocumentObjectModelforJAVA)是一个易用的、开源的库,用于XML,XPath和XSLT。
它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
Dom4j使用起来非常简单,效率高。
只要了解基本的XML-DOM模型就能使用。
POI
POI(PointofInterest)意为为兴趣点,是JAVA与MSOffice交互时用到的第三方JAR,也是开源的,属于Apache的一个项目,用法简单。
它主要用来读写OLE2复合文档结构,本系统主要用它来操作EXCEL。
IText
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。
通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
用法很简单,效率很高。
Lomboz
lomboz是用来开发j2ee应用、免费eclipse插件,用它可以大大加快web开发、部署等工作。
第三章系统设计
3.1系统体系结构
本系统采用三层B/S架构,分别为表示层、设计层和数据层,如图3-1所示。
(1)表示层(Presentation-Tier)
是报表显示层。
本报表系统的表示层有三种类型:
Web类型,Excel类型,Pdf类型。
(2)设计层(Designer-Tier)
是本报表系统的重中之重。
设计层设计的好坏直接影响到报表的使用。
其主要任务是建立报表、修改报表、发布报表、生成模板等。
这涉及到报表的数据来源,报表的格式,报表输出,是连接表示层和数据层的桥梁。
(3)数据层(Data-Tier)
主要是和用户有关。
本报表系统可以与几种常用的数据库系统交互。
报表中可以输入的数据很多,如图表、序列号、常量等。
数据层可以存储并管理这些数据。
图3-1系统体系结构图
3.2软件模块结构
本系统的软件模块结构,如图3-2所示。
图3-2系统软件模块结构图
图3-2中各模块的基本功能如下:
新建报表:
设置报表的名字、每页显示数目、选用报表模板;
把这些数据存到Preferences中,供保存报表使用。
新建数据源:
设置数据源名称,用它来标识数据连接;
选择数据库类型,并设置各种连接参数;
进行数据源说明;
进行连接测试;
连接成功后把数据源名称和各种连接参数保存到dataSource.xml文件中,供以后使用;
而数据源说明就生成一个文本文件保存。
编辑单元格:
设置单元格的数据,如数据源列、函数、系列号、图像;
设置颜色,字体;
设置所对应的行列是否扩展,所对应的行列是否排序。
这些都要用一定的格式保存起来,供报表显示时使用。
保存报表:
设置单元格属性后,保存设置内容。
先从Preferences读取报表相关数据,然后生成报表的xml;
遍历表格,把表格各种信息填到xml中。
编辑报表:
保存表格后,如觉得不满意,可以打开报表修改。
读取xml,把相关信息填到相应的单元格。
也可以设置报表的每页的行数、报表发布者、发布时间、报表说明。
生成电子表格:
电子表格可用来直接发布,也可用来编辑。
先读取报表xml文件,得到各个单元格的数据源,根据数据源不同,得到不同的数据,并填到相应的电子表格内。
可以设置电子表格的属性。
发布报表:
先设置发布目录,然后把项目文件夹下Files目录下的名和Preferences中保存相同的,后缀名为xml、xls、css、pdf的文件都复制到发布目录下。
如发布目录已有相同文件,就覆盖。
编辑CSS:
CSS决定网页页面显示格式,对报表非常重要。
本系统提供一个模板,旁边还有介绍各种标记的代表的内容的提示,这样用户就可以自己修改它。
修改完后点“确定”,生成报表名+“.css”的样式文件。
生成模板:
CSS不是很难,但要做一个好看的格式却很难,所心有必要把前面生成的CSS文件保存起来,提供下次使用。
首先设置模板名字,然后设置说明,点“确定”后,系统会把当前报表的CSS文件复制到模板xml文件,并生成说明的txt文件。
配置服务器:
配置发布目录、端口、最大线程数,以方便使用。
3.3数据源与系统文件结构
3.3.1系统数据源
报表就是数据的显示,所以数据源很重要。
本系统的数据源方案如下:
(1)提供建立数据源及管理数据源的功能。
针对不同类型的数据库数据,建立相应的数据源。
建立了数据源后,就用一个XML文件保存数据源信息,以后可直接从XML文件读取或修改连接信息。
(2)提供对其它类型数据源的支持。
主要支持EXCEL文件、函数、系列号、公式等数据源。
EXCEL文件可以直接解析为WEB格式,而函数,系列号,公式,图像等可以直接插入。
3.3.2系统文件结构
本系统作为一个桌面应用系统,涉及到许多文件系统,不管用户还是开发者,都有可能容易迷失在文件堆中,所以必须科学管理。
为了解决此问题,本系统设计了系统主目录文件结构,以下是系统主目录的的文件截图:
图3-4系统主目录文件结构图
图3-4中各文件的功能如下:
.metadata文件夹:
系统自动生成,保存有日志文件。
.setting文件夹:
系统自动生成,用于保存项目的各个参数。
Bin文件夹:
存放已经编译过的JAVA的.class文件。
DataSource文件夹:
存放数据源的dataSource.xml文件,其中还有各种.txt文件,用来说明各个数据源。
该文件夹结构如图3-5所示:
图3-5DataSource文件夹示意图
Files文件夹:
用来存放所生成的报表。
其中有存放报表信息的xml文件,也有生成为电子表格的.xls文件、pdf文件。
当然也存放了报表说明的.txt文件,其结构如图3-6所示:
图3-6Files文件夹示意图
图3-6Files文件夹结构示意图
icons文件夹:
用来存放图象,如按钮图标。
intro文件夹:
系统自动生成。
lib文件夹:
用来存放第三方JAR包。
META-INF文件夹:
系统自动生成,里面有MENIFEST.MF,在这个文件里有描述插件各种信息基本信息。
src文件夹:
是源文件,其结构如下图所示:
图3-7src文件夹示意图
从图中可知,src文件夹包括两个包,一个是xautreportdesign包,里面有Activator.java文件,这是RCP的激活类。
另一个是com包。
其实这个包里有三个子包:
com.Xautreportdesign.action,主要用来存放菜单,工具栏动作类的;
com.Xautreportdesign.util,主要用来存放一些工具类的,这些工具类对全局都有用;
com.Xautreportdesign.win,主要是界面方面的类,有一些是自动生成后我修改的。
com.Xautreportdesign.action包中的一部分类如图3-8所示:
图3-8com.Xautreportdesign.action包中文件示意图
com.Xautreportdesign.util包中的类如图3-9所示:
图3-9com.Xautreportdesign.util包中文件示意图
com.Xautreportdesign.win包中类类如图3-10所示:
图3-10com.Xautreportdesign.win包中文件示意图
Template文件夹:
是保存模板的文件夹,里面有模板文件.css文件,也有模板说明.txt文件,如图3-11所示:
图3-11Template文件夹示意图
.classpath、.project、build.properties、javaCompiler...args、plugin.xml、plugin_customization.ini都是系统自动生成的。
build.xml:
是用ant生成的,为系统打包用。
Report.product:
是要生成的新产品配置文件。
splash.bmp:
系统启动时产闪动画面使用。
3.3.3报表显示部分文件
对于报表WEB显示部分,有如下重要文件或文件夹:
dataSource文件夹:
存放数据源文件dataSourece.xml。
photo文件夹:
存放需要的图片文件。
.css文件:
是报表的css文件。
report.jsp:
是解析保存报表信息的.xml的文件。
exceltoweb.jsp:
是解析EXCEL并生成WEB的文件。
第四章系统实现
4.1主要实现算法
4.1.1新建报表流程图
图4-1新建报表算法流程图
该算法首先判断是否已有同名的报表,然后判断行数是否为数字,最后存入Preferences中。
4.1.2新建数据源流程图
图4-2新建数据源算法流程图
该算法先选择合适自己的数据库,然后输入信息,最后连接,看是否成功,若成功就把信息保存起来。
4.1.3编辑单元格流程图
图4-3新建报表算法流程图
该算法首先要得到当前鼠标的位置,然后转化为表格的行列,最后选择数据源,并设置单元格属性。
4.1.4保存报表流程图
图4-4保存报表算法流程图
该算法首先从Preferences中读取报表相关信息,生成报表名的xml文件。
然后遍历表格,读取各非空单元格的值及属性,填入写入小xml文件中,最后看是否用到模板,如用到,就生成报表名的css文件。
生成xml的代码如下所示:
<
XautReportFileName="
zainan"
tempname="
Template"
rownum="
8"
ownerName="
杨济忠"
time="
2008年6月3日"
intro="
true"
>
<
Columns>
ColumnDataSource="
D:
zainanDS.ID"
Span="
纵扩展"
Arrange="
不排序"
Color="
RGB{255,255,255}"
Font="
Tahoma.8.0"
A1<
/Column>
在XautReportFile中,“Name”代表报表的名字,“tempname”代表报表用到的模板,“rownum”代表WEB页每页显示的行数,“ownerName”代表作者,time代表发布时间,intro代表是否有说明内容。
而Columm代表一个单元格,“DataSource”代表数据源,里面不同的部分又代表不同的意思:
如前面为“D:
”,那代表数据库,中间代表前面建的数据源的名称,最后代码数据源的列。
如前面是“I:
”,那代表常量,后面部分就是常量的值。
、
如前面是“S:
”,那代表系列号,后面代表系列号的一部分。
如前面是“F:
”,那代表的是函数,后面是函数。
“Span”,代表扩展情况。
扩展就是其它单元格的值是否依赖这个单元格的值;
“Arrange”代表是否排序;
“Color”代表是颜色,;
“Font”代表字体。
而这个单元格的ID是A1。
4.1.5生成电子表格流程图
图4-5生成电子表格算法流程图
该算法首先从Preferences中得到当前报表名,然后读取报表XML文件,得到数据源名称。
读取数据源XML,遍历得到数据源的各种参数。
用这些参数连接数据库。
用POI创建EXCEL文件。
把数据库中数据写入EXCEL文件。
4.1.6发布报表流程图
图4-6发布报表算法流程图
该算法首先从Preferences中查看发布目录,如有,就复制报表XML到发布目录,如没有,就设置。
然后就开始判断是否有相关文件,如有,就一同复制,因为不复制,就没有用。
4.1.7编辑CSS流程图
图4-7编辑CSS算法流程图
该算法首先从CSS模板中读出模板内容,并显示出来,提供用户修改。
修改完成后点确定,从Preferences得当前报表,然后生成报表的CSS文件,如已有相同的就覆盖。
最后把修改后的CSS写入报表文件。
4.1.8生成模板流程图
图4-8生成模板算法流程图
该算法首先设置要生成模板的模板名及说明。
然后生成模板文件,当然是CSS类型。
如模板说明不为空,也生成文件文件类型的说明书。
然后从Preferences中得到当前报表,由此得到当前报表的CSS文件,最后把这CSS文件的内容写入模板文件里。
4.1.9配置服务器流程图
图4-9配置服务器算法流程图
该算法首先读取服务器配置文件并显示各个参数,这可以修改。
点确定后,就把修改后值写入配置文件,并更新相关视图。
4.2系统编码实现
4.2.1系统的主界面实现
本系统采用EclipseRCP技术,也就是开发可以独立运行的Eclipse的插件。
运用RCP技术,可以实现与Eclipse一样友好的界面,可以方便地组装成一个很强大的系统,因为这是采用插件机制。
本系统的主界面如图4-1所示:
图4-1报表设计系统主界面图
由图4-1可以看到,本系统和Eclipse界面有很大的相似性。
本系统主要用到了包com.xautreportdesign.win。
其中各个类的功能及重要代码说明如下:
Application类:
是RCP程序的入口类,RCP程序启动后第一个执行就是它,它负责程序的载入与退出。
这个类是建立项目后自动生成的,平常情况不需要修改。
ApplicationWorkbenchAdvisor类:
是配置工作台的类,工作台的初始化就在这完成。
这个类是建立项目后自动生成的,可以修改成自己需要的。
这个类的部分代码如下:
ApplicationWorkbenchWindowAdvisor类:
用来设置窗口。
一个工作台可以有多个窗口,所以可以多个该类的对象。
下面代码说明了窗口大小为(700,550),有工具栏,窗口标题,显示状态栏,生成系统托盘等。
以下是该类的部分实现代码:
publicvoidpreWindowOpen(){
/**设置窗口初始化的各种属性*/
IWorkbenchWindowConfigurerconfigurer=getWindowConfigurer();
configurer.setInitialSize(newPoint(700,550));
configurer.setShowCoolBar(true);
configurer.setShowStatusLine(false);
configurer.setTitle("
报表生成系统"
);
configurer.setShowPerspectiveBar(true);
configurer.setShowStatusLine(true);
finalIWorkbenchWindowwindow=getWindowConfigurer().getWindow();
/**创建系统托盘*/
trayItem=initTrayItem(window);
/**如果支持系统托盘,则创建托盘的菜单*/
if(