前言
最近因项目需要要自定义标准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: 行集合
rowstructureinfo: 表格单元格类型的填充域的表格行类
index: 该行在模板表格中的行索引(只读)
cells: 单元格集合
addcell: 添加单元格
cellstructureinfo:
表格单元格类型的填充域的单元格类
index: wordml中的列索引(大于或等于该单元格实体在行实体中的索引值)(只读)
colspan: 合并列数目(默认为1,即是不合并)(只读)
rowspan: 合并行数目(默认为1,即是不合并)(只读)
tips:
单元格中的提示内容(只读)
istemplate: 该单元格是否可填写(只读)
addcontentline: 添加填充内容并换行