根据标准word模板生成word文档类库(开源)

简介:

前言                                                                                                                           

  最近因项目需要要自定义标准word模板,并以编码方式操作word模板、填充数据和生成word文档,于是自己写了条小“内裤”来实现这个功能。该“内裤”只针对ooxml格式的word文档,当然大家可以用Aspose.words或其他第三方吧ole格式的转成ooxml格式的文档后再“穿这条裤”^_^。

  类库操作ooxml方面使用的是OpenXML SDK,所以需要.framework 3.0及以上版本的支持。

  今天贴上来的是第二版,第一版做得太粗糙了就不贴了,虽然第二版仍存在很多待改进的地方。旨在分享、讨论,希望大家多多指教。

  具体的标准word模板定义请见压缩文件的PPT吧!

组件描述                                                                     

通过该组件可获取word标准模板中的填充域,将文本、图片和表格信息填充至填充域并生成word文档。 
其中规定word标准模板的文件格式为.docx和.dotx,输出的word文档文件格式为.docx。 

该组件的填充域类型: 
1.段落中的填充域; 
2.填充域作为段落存在; 
3.表格单元格(仅含水平表头-可插入任意多行数据、含水平和垂直表头-仅能填充模板中固定的单元格)。 

该组件的填充内容类型: 
1.文本(可设置字体、字体颜色、字体大小、背景色) 
2.图片(可设置图片宽高) 
3.表格(可设置单元格宽度) 

填充规则: 
1.段落中的填充域可填充文本和图片; 
2.填充域作为段落时可填充文本、图片和表格,还可以通过AddContentLine方法在填充文本和图片后换行; 
3.表格单元格时可填充文本、图片,还可以通过单元格CellInfo对象的AddContentLine方法在填充文本和图片后换行。 

使用说明                              

 

引用WordMLHelper.dll。 

1.调用WordMLHelper的GetAllTagInfo方法(只接受后缀为.docx和.dotx的模板文件路径)获取word标准模板的填充域集合List<TagInfo>; 
2.填充域对象(TagInfo)的Tbl属性(类型为TblStructureInfo)表示表格单元格类型的填充域对象(默认值为null代表该填充域非表格单元格类型),可通过Tbl[rowIndex,cellIndex]的方式获取表格的单元格,并调用单元格(CellStructureInfo)的AddContent和AddContentLine(填充内容后换行)方法填充文本和图片; 
3.Tbl属性的TblType变量表示该表格是仅含水平表头(HORIZONTAL_HEADER)还是含水平和垂直表头(HORIZONTAL_VERTICAL_HEADER)。 
4.根据需要将文本(TxtInfo对象)、图片(ImgInfo对象)和表格(TblInfo对象)通过调用填充域(TagInfo对象)的AddContent和AddContentLine(填充内容后换行)方法填充到填充域中。 
5.TxtInfo、ImgInfo和TblInfo类中含高度、宽度等样式属性。 
6.若填充内容为不含样式的纯文本内容,则可通过WordMLHelper中的FillContentWithoutStyle方法将文本信息填充至填充域。 
7.若要将不含样式的纯文本内容填充到表格单元格类型(仅含水平表头)的填充域,则可调用WordMLHelper中的FillContentToTable(TagInfo tagInfo, DataTable dt)。 
8.若要生成不含样式的纯文本内容的表格,则可调用WordMLHelper中的FillContentToTable(TagInfo tagInfo, DataTable dt)。 
9.调用WordMLHelper的GenerateWordDocument方法即可生成word文档。
 

接口                                      

 

WordMLHelper:操作模板类 
方法如下: 
GetAllTagInfo:获取模板填充域及附加信息 
FillContentToTable:快速填充、生成纯文本表格 
FillContentWithoutStyle:快速填充纯文本内容到填充域 
GenerateWordDocument:根据模板生成word文档 

TagInfo:填充域类 
属性如下: 
Seq:填充域的序号 
TagTips:填充域的提示信息 
Tbl:表格单元格填充域类型对象(默认为null,表示非表格单元格填充域类型) 

TxtInfo:文本类型填充内容类 
属性如下: 
Size:字体大小 
ForeColor: 字体颜色 
HightLight: 背景色(高亮) 
FontFamily: 字体 
Content: 文本内容 

ImgInfo:图片类型填充内容类 
属性如下: 
Width: 图片宽度 
Height: 图片高度 
ImgPath: 图片路径 

TblInfo:表格类型填充内容类 
属性如下: 
Width: 表格宽度 
Rows: 行集合 
方法如下: 
AddRow: 填充行 

RowInfo: 表格类型填充内容的表格行类 
属性如下: 
Cells: 单元格 
方法如下: 
AddCell: 填充单元格 

CellInfo: 表格类型填充内容的单元格类 
属性如下: 
Width: 单元格宽度 
ColSpan: 列合并数(默认为1) 
RowSpan: 行合并数(默认为1) 
方法如下: 
AddContent: 添加填充内容 
AddContentLine: 添加填充内容并换行 

TableStructureInfo: 表格单元格类型的填充域类 
属性如下: 
TblType: TblType枚举类型,表示表格是仅含水平表头还是含水平和垂直表头 
Rows: 行集合 
方法如下: 
AddRow: 填充行 

RowStructureInfo: 表格单元格类型的填充域的表格行类 
属性如下: 
Index: 该行在模板表格中的行索引(只读) 
Cells: 单元格集合 
方法如下: 
AddCell: 添加单元格 

CellStructureInfo: 表格单元格类型的填充域的单元格类 
属性如下: 
Index: wordML中的列索引(大于或等于该单元格实体在行实体中的索引值)(只读) 
ColSpan: 合并列数目(默认为1,即是不合并)(只读) 
RowSpan: 合并行数目(默认为1,即是不合并)(只读) 
Tips: 单元格中的提示内容(只读) 
IsTemplate: 该单元格是否可填写(只读) 
方法如下: 
AddContent: 添加填充内容 
AddContentLine: 添加填充内容并换行 

源代码:http://www.oschina.net/code/snippet_229858_11745

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!


本文转自^_^肥仔John博客园博客,原文链接:http://www.cnblogs.com/fsjohnhuang/archive/2012/07/09/2583230.html,如需转载请自行联系原作者

目录
打赏
0
0
0
0
66
分享
相关文章
优化性能与减少资源浪费:深入了解缓存策略
缓存策略是现代Web开发中关键的优化技术之一,它可以显著提高网站性能,降低服务器负载,并减少用户等待时间。在本博客中,我们将深入研究缓存策略的概念、不同类型的缓存和如何在项目中实施它们。
306 0
SQL获取当月天数的几种方法
原文:SQL获取当月天数的几种方法 日期直接减去int类型的数字 等于 DATEADD(DAY,- 数字,日期) 下面三种方法: 1,日期加一个月减去当前天数,相当于这个月最后一天的日期。然后获取天数。
4851 1
探索大数据技术:Hadoop与Spark的奥秘之旅
【5月更文挑战第28天】本文探讨了大数据技术中的Hadoop和Spark,Hadoop作为分布式系统基础架构,通过HDFS和MapReduce处理大规模数据,适用于搜索引擎等场景。Spark是快速数据处理引擎,采用内存计算和DAG模型,适用于实时推荐和机器学习。两者各有优势,未来将继续发展和完善,助力大数据时代的发展。
正向代理和反向代理以及nginx的简介
今天来看一个简单的知识点,正向代理和反向代理。相信这两个名词大家都听过。那么什么是正向代理?什么是反向代理呢?带着这个问题让我们开始今天的学习之旅。
836 0
正向代理和反向代理以及nginx的简介
【ECS测评大赛】ECS C5全方位对比测评、服务搭建(含Alinux 3)
本篇采用AWS对阿里云进行对比参照,将基于用户实例控制台,实例性能各方面参数进行对比,以及整体服务运行对服务器资源消耗情况,并且您还可以看到分别使用CentOS 7和Alinux 3分别搭建LAMP,LNMP环境,在后面会展现出常规用户使用案例,如wordpress博客搭建,Discuz!论坛搭建,KodCloud系统搭建,NextCloud云盘搭建,私人NAS搭建,极狐GitLab 一体化 DevOps 平台搭建 对应的阿里云社区视频为:https://developer.aliyun.com/live/249082,只涉及部分服务搭建
39536 27
【ECS测评大赛】ECS C5全方位对比测评、服务搭建(含Alinux 3)
IntelliJ IDEA上手这一篇就够了,从入门到上瘾
IntelliJ IDEA上手这一篇就够了,从入门到上瘾
976 0
IntelliJ IDEA上手这一篇就够了,从入门到上瘾
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问