根据标准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: 添加填充内容并换行 
目录
相关文章
|
Java Apache
如何用 Java 实现 word、excel 等文档在线预览?
java实现办公文件在线预览功能是一个大家在工作中也许会遇到的需求,网上些公司专门提供这样的服务,不过需要收费 如果想要免费的,可以用openoffice,实现原理就是:
|
2月前
|
IDE 开发工具 Python
Python自动化操作word--批量替换word文档中的文字
Python自动化操作word--批量替换word文档中的文字
135 0
|
5月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
308 6
|
7月前
|
存储
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
160 0
|
Java Apache
Java 使用word模板创建word文档报告教程
Java 使用word模板创建word文档报告教程
618 0
Java 使用word模板创建word文档报告教程
Word 2010的高级应用
3.9 Word 2010的高级应用 3.9.1 邮件合并 邮件合并的作用是要编辑和处理的多份文档中主要内容都是相同的,只是具体的数据有不同的变化,如录取通知书、会议邀请函、产品说明书等。 邮件合并需要两部分内容,一部分是主文栏即相同部分的内容,如录取通知书正文;另一部分为数据源文件,即可变化部分,如学生姓名、录取专业等。 邮件合并的步骤: 1设置主文档 2设置数据源 3插入合并域 4邮件合并 3.9.2 插入目录 1、插入目录 打开需要编辑的文档,将插入点定位在文档起始处,切换到引用”选项卡,然后单击“目录”组中的“目录”按钮,在弹出的下拉列表中选择需要的目录样式,或者选择“
|
SQL 数据挖掘 Python
Python自动化:根据模板批量生成含指定数据的word文档
Python自动化:根据模板批量生成含指定数据的word文档
1012 0
Python自动化:根据模板批量生成含指定数据的word文档
教程 Win平台互转 PDF和Word
PDF 转 Word 福昕PDF转Word转换器下载 http://pdf2word.pdf365.cn/ 5页以内的PDF转换免费,大于5页的PDF需要购买 年费会员。 Word 转 PDF 非常简单, 例如 WPS 或者 Word都提供此类功能 WPS的"输出为PDF" 直接编辑 PDF文件 插入图片, 修改文字等操作 这里推荐 万兴PDF专家 网上有相关资源. 请尽量使用正版软件。 修改PDF的配置信息 如果修改了PDF文件, PDF的文件描述可能会改变, 我们可以先记下配置信息, 再照猫画虎做到以假乱真的效果. 搜索 pdf_info_changer 这款免费软件.
131 0
教程 Win平台互转 PDF和Word
|
Python
Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示
Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示
371 0
Python 技术篇-利用Office VBA实现word文档转化为pdf文档实例演示
|
Serverless 文件存储 容器
开发函数计算的正确姿势——借助 LibreOffice 将 Word 转换成 PDF
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
3791 0