前言
最近因項目需要要自定義标準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: 添加填充内容并換行