报表设计器开发.docx

上传人:b****4 文档编号:5067148 上传时间:2022-12-13 格式:DOCX 页数:66 大小:462.36KB
下载 相关 举报
报表设计器开发.docx_第1页
第1页 / 共66页
报表设计器开发.docx_第2页
第2页 / 共66页
报表设计器开发.docx_第3页
第3页 / 共66页
报表设计器开发.docx_第4页
第4页 / 共66页
报表设计器开发.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

报表设计器开发.docx

《报表设计器开发.docx》由会员分享,可在线阅读,更多相关《报表设计器开发.docx(66页珍藏版)》请在冰豆网上搜索。

报表设计器开发.docx

报表设计器开发

报表设计器开发

摘要

现在是信息社会,各种信息都需要处理并直观展现,如股票,物价等信息都需要通过数据报表来展现、分析,因此高质量报表软件系统具有重要的实际意义。

本论文课题研究探索了报表系统的开发方法与技术,综合应用Eclipse、JAVA、JDBC、SWT/Jface、RCP、XML、CSS、DOM4J,IText,POI等先进技术,开发了基于WEB环境运行的报表设计器,实现了报表设计、模板生成、报表编辑,报表发布等基本功能,为进一步开发实用的报表系统奠定了基础。

关键词:

报表,SWT/Jface,Eclipse,XML,B/S,RCP

 

Abstract

Nowistheinformationsociety,allkindsofinformationneedtobeaddressedandvisualdisplay,suchasstock,pricesandotherinformationneededtodemonstratethroughdatareports,analysis,thestatementsofhigh-qualitysoftwaresystemhasimportantpracticalsignificance.

Thispaperstatementssubjecttostudyandexplorethesystemdevelopmentmethodsandtechnology,comprehensiveapplicationofEclipse,JAVA,JDBC,SWT/Jface,RCP,XML,CSS,DOM4J,IText,POI,andotheradvancedtechnology,thedevelopmentoftheoperatingenvironmentbasedonthestatementsWEBdesign,Achievedareportdesign,templategeneration,editingstatements,issuedstatementsofsuchbasicfunctions,forthefurtherdevelopmentofpracticalsystemlaidthefoundationforstatements.

KEYWORDS:

Report,SWT/JFace、Eclipse、XML、B/S、RCP

 

 

 

第一章概述

1.1课题背景与意义

现在是信息社会,各种信息都需要处理并直观展现,如股票,物价等信息都需要通过数据报表来展现、分析,因此对高质量报表软件系统的需求非常强烈。

报表设计工具是报表系统的重要组成部分,使用报表设计工具,可对企业以及其他用户需要的各种报表进行设计,并在报表引擎上运行。

报表设计工具的功能包括数据源关联与访问、报表绘制、布局绘制、属性编辑、脚本编辑、图表编辑、表达式编辑、报表数据映射、报表预览调试等。

可通过XML转换技术将报表转换换为PDF、Excel等格式输出。

随着B/S应用逐步取代C/S,市场上对Web环境下运行报表的要求日益强烈,C/S时期的报表工具纷纷进行了若干改进与加强,支持B/S结构。

这些工具大都是对开源软件进行包装改造,基本上有两种流派:

一类来自于FastReport这种基于Delphi的软件,通过控件方式实现Web报表,进而将报表计算移至服务器上进行,再改进为支持Linux;另一类来自于Jasper的基于Java的开源软件。

这些工具的整体思路还是沿袭了C/S时的方式,仍然是传统的分组报表的模式,仍然无法解决表样和大作量的代码编写问题,而且使用复杂,不能很好的发挥其效率,不能利用已有的软件功能,同时他们都是利用SWING/AWT来开发的,界面难看。

  

因此,开发一个具有B/S结构、能适应中国国情、开源的、使用方便、界面美观的报表设计器是一个很多用户直期待的。

但是,目前流行的报表软件产品中,比较适合中国情况的产品还是不多。

因此,进行本课题研究,开发报表设计器软件,对于开发适合中国特点的实用报表系统,促进企业与社会信息化,具有很好的实际意义。

1.2报表系统发展概况

信息化的初期阶段,计算机作为一种新的生产工具,其主要功能是文字输出,如文件打印、表格输出等,相比较手工方式而言,工作效率大大提高。

这个时期,用于报表生成的软件主要是WPS表格、CCED、Excel等文字处理工具,这些工具仅仅是将手工绘制报表的方式改为电子处理方式,未涉及到报表数据的集中、共享等处理。

更确切地说,这个时期还没有真正意义上的报表工具。

    随着信息化程度的不断提高,C/S应用方式逐渐成熟,出现了很多报表工具软件,最著名的当属水晶报表和PB的DataWindow。

水晶报表在上世纪一直被微软OEM,成为VB的内置报表工具,在微软的强大支持下,VB庞大的用户群为水晶报表培养了众多应用人员并积累了大量成功案例,从而产生了世界第一(用户量)的报表工具。

DataWindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式,快速的报表制作能力深受PB开发者的喜爱。

    这些软件的基本特征是单数据源、条带式(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的代码如下所示:

zainanDS.ID"Span="纵扩展"Arrange="不排序"Color="RGB{255,255,255}"Font="Tahoma.8.0">A1

在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(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1