娄国哲
【摘要】 本文对比了常用的Word报表生成技术的特点,介绍了基于WordXML技术实现Word报表的优势和流程,并以一个实际应用中的范例给予了说明。
【关键词】 Word报表 WordXML 自动生成
自动化办公系统中,报表组件是必不可少的组成部分。报表组件的种类繁多,使用的技术也不尽相同。常用的商业化报表组件功能强大,支持多种输出格式,但与Word格式完美兼容的不多。在一些习惯使用Word作为办公文档的单位中,Word报表的生成技术仍然不可或缺。
一、Word报表生成技术对比
Word报表的生成技术大致分为两类:。
(一)使用COM接口操作Word对象。该方法可以充分利用微软提供的API实现各种复杂的操作,但也存在明显的不足。首先,应用程序依赖Office COM接口意味着报表生成过程无法脱离Office运行环境,从而无法实现跨平台;其次,Office COM接口的执行效率一直为开发者和使用者所诟病;再次COM技术较为复杂,一般用户难以完成报表模板的定义工作。
(二)使用XML技术操作Word XML对象。该方法是Office2003以上版本支持的方法,该方法的共同点是报表的生成不再依赖Office接口,而且效率极高。该类方法又可细分为两种。一种方法是使用类似FreeMarker的模板引擎来生成Word报表。该方法要求精通XML技术的开发人员使用XML编辑器来定义模板,模板定义好后不再支持使用Office对此文档进行再编辑,也不方便开发人员修改模板;另一种方法是使用WordProcessingXML(简称WordML)技术来生成Word报表。该方法中使用的模板可以通过Office直接定义,这样既降低了开发难度,同时也方便了用户对模板的二次定制和数据复用。
二、基于WordXML技术的Word报表生成流程
报表的生成一般方法是通过某种规则将数据自动填充到预定的报表模版中。基于WordXML技术的Word报表生成流程一般分为四步:
(一)根据报表数据生成XML架构文件。报表中填充的数据必须是定义良好的XML文档,而对XML文档格式的最佳描述是XML架构文件(XSD文件)。Word模板定义过程的依据即是XML数据的架构文件。XML架构文件的生成方法很多,Visual Studio中提供的XSD命令可以根据实体类生成对应的XSD;XMLSpy软件可以通过XML数据文件自动生成架构文件。
(二)定义Word报表模板文件。首先打开Word软件,新建或选择Word模板文件,导入第一步中生成的XML架构文件;然后通过鼠标将XML架构中的节点与模板中的内容一一对应起来,注意要按照先父节点后子节点的顺序进行操作;最后将模板保存为XML格式。
(三)生成XSLT转换文件。Word报表模板是XML文件,Word报表也是XML文件。我们可以使用扩展样式表语言(XLST)自动完成模版文件到报表文件的自动转换。微软提供了由模板生成XLST文件的工具(WML2XSLT,可以从微软提供的Word 2003:XML SDK中下载),该工具提供了命令行接口完成XLST文件的自动生成。
(四)使用报表数据生成最终报表。有了XLST文件,就可以将定义良好的XML数据直接转换为最终报表。我们可以使用任何一种支持XML的编程语言编写报表生成程序,也可以使用第三方XML编辑器完成自动转化(如XMLSpy等)。
三、实际应用举例
我们以个人信息报告表为例来说明报表的生成流程。报告表中所使用的人员数据主要包括基本信息、培训履历和工作履历三部分内容,如图1所示。其中,基本信息包含了姓名、性别、出生时间等十几个信息项;培训履历最多允许填写四条记录,主要包含了起始时间、终止时间、院校名称、所学专业和获得学位5个信息项。
报告表模板中包含了多个表格。Word使用粉红色文本框(可以隐藏)显示XML文章中节点与文章中位置的对应关系格的某个单元格,如图2所示:基本信息中的每一个信息项对应了表格中的某个单元格;培训履历记录对应了第二个表格中的明细行。 根据XML格式人员数据生成报告表后,人员数据将替图2中的标签。如果培训履历中有多条记录,则会在对应表格中新插入新行以显示数据。
四、结语
基于WordXML技术的Word报表生成方法不仅简单易上手,而且具有良好的可扩展性。虽然自Office 2012后Word不再支持这种定义机制,但此方法仍有不少的应用场景。
参 考 文 献
[1] Microsoft Corporation. Overview of WordprocessingML[EB/OL]. http://rep.oio.dk/Microsoft.com/officeschemas/ welcome.htm,2015-3
[2] W3School. XSLT 教程[EB/OL].http://www.w3school.com.cn/xsl/index.asp, 2015-3
[3] 唐雪梅. 利用XML格式解析原理批量进行成果资料格式检查. 物探化探计算技术[J],2013(05):617.