当前位置:文档之家› 基于C#快速生成word报告

基于C#快速生成word报告

计算机系统应用 https://www.doczj.com/doc/759984074.html, 2012 年第21卷第 7 期

基于C#快速生成word报告①

肖 斌1,李 超1,汪 敏2

1(西南石油大学计算机科学学院,成都 610500)

2(西南石油大学电气信息工程学院,成都610500)

摘 要:在进行信息系统的开发过程中,在word文档中特定位置填入从数据库中读取的数据资料来自动生成word文档报告,已成为办公自动化系统的重要组成部分。分析了传统word对象模型生成海量表格数据速度慢的弊端,结合微软Office Word2003对XML的支持特性,通过Word 文档和XML文档的相互转换,提出利用StringTemplate将DataTable的数据转换成特定格式的xml字符串,实现海量表格数据的快速导出。

关键词:Word模板;StringTemplate;XML

Generating Rapidly Word Report Based on C#

XIAO Bin1, LI CAO1, WANG Min2

1(School of Computer Science, Southwest Petroleum University, Chengdu 610500, China)

2(Schoo of Electrical Engineering and Information, Southwest Petroleum University, Chengdu 610500, China)

Abstract:When developing an information system, filling in data information at the specific position of word documents to automatically generate documents’ reports has played an important part in Office Automation System. This paper analyzes the traditional Word object model, which has disadvantages of generating mass of table data slowly. In conjunction with the good supporting characteristics of Microsoft Office Word 2003 for XML, and by way of the interconversion of Word document and XML document, this paper proposes that converting Data table into XML of specified format by utilization of StringTemplate can realize the fast derivation of mass table Data.

Key words:Word template; StringTemplate; XML

1引言

Word不但具有无与伦比的图文处理能力,同时也提供了Word层次结构的对象,使用户可以用VBA或者第三方软件开发工具实现文档自动化。因此,越来越多的软件系统开始采用Word作为报表输出工具,有的甚至将Word作为数据录入工具[1,3]。但是C#与Word交互时,每次都需要调用I/O接口,在处理海量表格数据时,如果循环对每个单元格赋值,那是非常耗资源的,导出速度慢。

本文提出另外一种办法来解决这个问题。利用https://www.doczj.com/doc/759984074.html,取得数据集,取出数据集中的DataTable数据,将数据转换为泛型集合Dictionary以树型节点的方式进行存储。利用office2003支持xml的特性并结

①收稿时间:2011-11-03;收到修改稿时间:2011-12-05合StringTemplate的视图与业务分离的特性将动态的业务数据最终以xml格式的方式写入文档内容。提高生成word报告的速度。

2传统的生成word报表实现原理

将Word作为报表输出或者录入工具,一般都是采用制作Word模板的方法来解决字符的定位。WORD的模板文件其实就是通过书签来添加内容的。也就是通过在WORD文档中创建书签,然后在程序中获取模板文件的所有书签,通过给书签赋值来进行文档生成[2]。在C#中,需要调用OFFICE的WORD组件通过C#来操作WORD,进而生成WORD文档。Word层次结构的对象如图1所示:

232 经验交流 Experiences Exchange

相关主题
文本预览
相关文档 最新文档