admin 管理员组

文章数量: 1184232


2024年4月19日发(作者:pycharm编写一个简单的程序)

龙源期刊网

利用XML和Excel设计动态通用报表

系统的新方法

作者:王勇超 张 璟 马 静 王新卫 杨凯锋

来源:《现代电子技术》2008年第18期

摘 要:提出一种利用XML和Excel设计动态通用报表系统的新方法。首先对Excel报表

模板进行分解,生成报表模板的报表信息、架构信息和映射信息,再根据统计模板生成统计分

析信息,这些信息均以XML文档的形式存入数据库。在系统运行时,将用户上报的Excel文

件中的报表数据提取出来,以XML文档的形式存入数据库。然后结合XPath和XQuery对报

表数据进行统计分析,得到统计报表数据。最后将统计报表数据组装为Excel文件输出给用

户。采用这种方法设计的报表系统动态灵活、通用性强。

关键词:XML;Excel;XPath;XQuery

中图分类号:TP311 文献标识码:B 文章编号:1004373X(2

A New Way to Design Generalpurpose Reporting Systems Using XML and Excel

WANG Yongchao1,ZHANG Jing1,MA Jing2,WANG Xinwei1,YANG Kaifeng1

( y of Computer Science and Engineering,Xi′an University of

Technology,Xi′an,710048,China;′an Technological University,Xi′an,710048,China)

Abstract:This paper discusses a new way to design dynamic and generalpurpose reporting

systems,which utilizes XML and templates is deconstructed and reporting

information,structure information and mapping information of templates are built,and statistics by a

statistic template is generated,and all these information are stored in database in XML

that,data is extracted from user uploaded Excel files and it is saved to database in XML

Xpath and XQuery,reporting data and statistic data which is further composed into an Excel file to

kind of design makes reporting system more flexible and customizable.

Keywords:XML;Excel;XPath;XQuery

1 引 言

在现实生活中特别是在企业里面,报表无处不在,报表生成工具在管理信息系统中有着举

足轻重的地位。通过对生产活动中的各种数据进行汇总、统计和分析,可以多层次,多角度、

全面而详细地了解企业生产运作状态,是管理高层进行决策规划的数据基础。然而,由于我国

企业报表的设计规划很不规范,样式规格纷繁复杂,对于每一个信息管理系统来说,报表部分

龙源期刊网

都是极其耗时费力的工作,而且还常不能满足用户灵活变动的要求。设计一个报表样式可以由

用户灵活设计,通用的报表系统是一个非常实际意义的研究课题。

2 报表系统研究现状

Excel是专业的制表工具,内置丰富的公式函数,具有强大的数据统计分析功能。目前在

企业当中,Excel的应用非常的普遍,几乎所有的计划统计部门都采用Excel作为日常最主要

的报表工具。因此,在动态通用报表的设计方面,以Excel组件为操作对象进行报表系统的开

发很受软件开发者的欢迎。目前这方面的研究已经取得了很大的成果

1

,但是由于以Excel文

件作为文件对象访问方式要求对每一种样式的Excel文件都要单独编程,工作量大且灵活性

差,以Excel文件作为数据库访问方式对于规范的二维顺序表样式的报表没有问题,但是对于

不规则的交叉表、混合统计汇总表等就无能为力,而实际当中这类不规范的占的比重还非常

大。因此在实际应用当中还有很多问题需要解决。

XML是一种可扩展性标记语言,其自描述性使其非常适用于不同应用间的数据交换,而且

这种交换是不以预先规定一组数据结构定义为前提。XML最大的优点是它对数据描述和数据

传送的能力,因此具备很强的开放性。如果用XML来描述报表数据,则报表的设计就会具有

很大的灵活性,因此利用XML实现动态通用报表的研究也开始受到人们的重视,并取得了一

定的成果。但是也都存在一些问题,如参考文献[2]中提出的方法仅限于对已有数据的查询

结果进行格式调整,只是在最后报表的生成阶段实现了灵活设置,参考文献[3]所提出的方

法需要构建知识表达和知识库,实际操作性较差。参考文件[4]采用模板技术,模板与数据

相分离,采用数据库方式存储报表模板和系统各种数据,实现报表的权限管理、分类管理和网

络化管理,但是在实现上采用FastReport这个商用软件实现,无法由程序开发人员自由控制。

参考文件[5]采用固定格式的文本文件作为报表文件的载体,经过解析程序实现动态报表,

利用这种方法设计的报表系统灵活性较好,但是由于所有工作围绕文本文件进行,所以操控性

较差,解析工作比较麻烦。

本文在对XML和Excel的进行深入研究后,提出一种新的动态通用报表系统的设计方

法。采用模板技术,数据与表现分离,以XML为载体经过解析进行数据统计分析并动态生成

报表。具体操作时,以企业中普遍采用的Excel文件作为报表模板和数据采集对象,对Excel

文件进行XML分解,使报表的数据和表现相分离,以XML的形式存入数据库,使用XQuery

语言对数据库中的XML数据进行统计和分析,通过对XML数据的组装最后以Excel文件的形

式输出报表。

3 系统结构设计

整个报表系统的系统结构如图1所示,由报表模板生成、统计模板生成、报表数据采集、

报表组装4大子系统及数据库组成。

龙源期刊网

报表模板生成子系统将Excel文件格式的报表模板进行XML分解,将报表的结构信息以

XML格式存入数据库。统计模板生成子系统负责生成描述报表中各数据组成元素间逻辑关系

的信息,同样以XML格式存入数据。报表数据采集子系统负责采集具体报表文件中的数据,

根据某种报表模板的XML描述信息将其具体的数据以XML格式存入数据库。报表组装子系

统则根据报表模板的结构信息、数据逻辑关系和具体数据进行统计计算并组装,以Excel文件

的格式输出报表。其中报表模板生成子系统是整个系统的基础和核心,下面也将以报表模板生

成为重点对各个子系统进行详细介绍。

3.1 报表模板生成

报表模板生成子系统的系统结构如图2所示,将Excel文件格式的报表模板进行XML分

解,生成与其对应的模板信息、架构信息、映射信息的XML描述。这3种信息的XML描述

存放在数据库(如MS SQL Server2005)中,在后面的统计分析、数据采集以及报表组装时都

会用到。

模板信息描述报表的基本信息,包括模板标识、模板定制人、模板定制时间、报表类型、

表头信息、数据信息等内容。报表类型主要分为顺序型、交叉型和混杂型3类。顺序型报表最

为常见,也是惟一可以直接转化为数据库形式的报表,即表头为上面若干行,下面为数据。交

叉型报表的特点是上面若干行和左面若干列为表头,中间部分为数据。混杂型报表的表头和数

据相互交错,很不规范,一般都可以通过一定的手段转化为交叉表。表头信息和数据信息主要

说明表头和数据区域的范围。具体就是在工作表中的起始行号、列号以及行数、列数。

架构信息描述报表所包含信息的结构状况,即Excel模板样式的树型结构。Excel模板样

式都可以用树型结构表示。报表有效区域的单元格可以分为2大类:一类是表头,表示的是框

架信息,在结构树中是枝干;另一类是数据,是具体的值,在结构树中是叶子结点。架构信息

就是Excel模板样式结构树对应的XML描述。如图3所示的报表模板对应的模板结构树如图4

所示,经处理后得到的架构信息如图5所示。

映射信息描述报表中每一个数据单元格与模板样式结构树中的每一个叶子节点的一一对应

关系。图3所示的报表模板经处理后得到的映射信息如图6所示。通过映射信息,就可以知道

Excel报表文件中的每一个有效的数据单元格所表示的具体的含义(即叶子节点在结构树中的

位置),也可以知道每一个叶子节点的值(Excel报表文件中对应的单元格中的数值)。如图

3所示报表模板中的“D6”单元格(第6行第4列)所表示的就是“/洗煤名称/洗煤/本季度总产量/目

标”,同样,“/洗煤名称/合计/本季度总产量/计划”的值就是单元格“C4”(第4行第3列)的

值。

图5和图6中前面带“+”号的数据项没有展开,因其结构和上面已经展开数据项的相似,

为了完成的显示整体内容故处于折叠状态。

3.2 统计模板生成

龙源期刊网

报表中的数据来源主要有2种:直接获取的和统计计算的结果。统计模板生成的主要任务

就是描述统计计算的方式方法。Excel强大的统计功能依赖于其丰富的公式和函数,而公式和

函数可以将Excel文件中的指定单元格作为操作对象又是其充分发挥作用的基础。同理,报表

统计必然要求系统能够方便快捷的获取现有的报表数据,而报表数据是以XML文档的格式存

在数据库中的,因此如何从XML文档中获取数据是关键问题。

XPath是一门在 XML 文档中查找信息的语言。XPath可用来在XML文档中对元素和属性

进行遍历。XPath是 W3C XSLT 标准的主要元素,并且XQuery和XPointer同时被构建于

XPath表达之上。

XQuery是一种可以查询结构化或半结构化XML 数据的语言。XQuery 基于现有的 XPath

查询语言,并支持更好的迭代、更好的排序结果以及构造必须的XML的功能。若要查询

XML类型的变量或列中存储的XML实例,可以使用XML数据类型方法。例如,可以声明一

个XML类型的变量,然后使用 XML 数据类型的 query() 方法来查询此变量。

前面的模板生成将Excel模板分解成模板信息、架构信息和映射信息,特别是映射信息的

生成,使得仅以行号和列号标识的单元格具备了实际的现实意义。使用XQuery语言对数据库

中的XML数据进行自动提取

6

,并将提取的数据进行一些运算,按照Excel公式和函数的功

能设计理念,同一报表内部的数据逻辑关系可以非常容易的进行设置。仍以图3中的报表为

例,合计的入洗煤量等于洗煤的入洗煤量加上块煤的入洗煤量,即:“/洗煤名称/合计/入洗煤

量”=“/洗煤名称/洗煤/入洗煤量”+“/洗煤名称/块煤/入洗煤量”。如果加上模板的其他信息,则不

同报表之间的数据逻辑关系也可以设置。如计划“/洗煤名称/合计/本季度总产量/计划”=“洗煤产

品产量计划表/{本季度}/总产量/计划”。统计模板生成系统结构如图7所示。

3.3 报表数据采集

将XML架构与工作簿相关联,能够更为简单和可靠地在Excel中导入和导出数据。当

XML 架构添加到工作簿时,Excel 会创建一个称为XML 映射的对象。这些 XML 映射可以将

单元格或范围映射到XML 架构中的元素。在导入或导出XML 数据时,Excel 使用这些映射将

映射范围的内容与架构中的元素联系在一起。

数据采集的系统结构如图8所示。在前面,已经根据报表模板生成了架构信息、映射信息

等XML描述并存入数据库;上报数据的时候,根据这些信息和上报的Excel报表文件结合,

就可以将Excel报表文件中的数据信息提取出来,将其以XML数据的形式存入数据库,同时

记录上报人、上报时间等报表信息。

3.4 报表统计输出

龙源期刊网

报表组装输出的系统结构如图9所示。首先根据报表信息和统计分析信息对报表数据进行

统计、汇总计算,生成最终报表的报表数据,最后根据架构信息和映射信息组装成Excel报表

文件输出给用户。

4 结 语

本文通过对XML和Excel的研究,提出一种利用XML和Excel设计动态通用报表系统的

新方法,并在图9 报表生成模块系统结构山东兖矿集团煤业公司煤矿的报表管理系统中进行实

际应用。采用这种方法设计的报表系统可以方便灵活地设置报表模板,完成数据上报以及统

计、汇总和分析,并且适用于各行各业,通用性强。

参 考 文 献

[1]文静华,张梅.基于Excel的企业通用动态报表生成工具的设计[J].计算机工程,

2005,31(4):221223.

[2]艾永亮,王保保.一种新的通用报表模型的研究与实现.现代电子技

术,2007,30(4):172173.

[3]潘福成,张士杰.基于XML的智能报表生成工具的研究[J].小型微型计算机系统,

2005,26(1):134138.

[4]周一,王世耕,黄忠全,等.基于FastReport的通用报表系统的设计与实现[J].计

算机应用与软件,2008(2):284285.

[5]张亚平,贺占庄.B/S架构下动态报表的一种实现方式[J].计算机技术与发展,

2007(4):9395.

[6]Scott Boag,Don Chamberlin,Mary F Fernández,et 1.0: An XML Query

:///TR/2007/REC-xquery-20070123.

作者简介 王勇超 男,1979年出生,河北定州人,硕士。研究方向为计算机应用、高性能计

算。

张 璟 男,1958年出生,陕西宝鸡人,教授,博士生导师。主要研究方向为计算机网络、

软件开发以及电子商务。

马 静 女,1980年出生,助教。主要研究方向为计算机网络。

王新卫 女,1980年出生,图书馆馆员。主要从事计算机管理和信息技术的研究工作。

杨凯锋 男,1970年出生,讲师。主要研究方向为计算机应用。

龙源期刊网


本文标签: 报表 数据 模板 信息 生成