天天看點

根據标準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: 行集合

rowstructureinfo: 表格單元格類型的填充域的表格行類

index: 該行在模闆表格中的行索引(隻讀)

cells: 單元格集合

addcell: 添加單元格

cellstructureinfo:

表格單元格類型的填充域的單元格類

index: wordml中的列索引(大于或等于該單元格實體在行實體中的索引值)(隻讀)

colspan: 合并列數目(預設為1,即是不合并)(隻讀)

rowspan: 合并行數目(預設為1,即是不合并)(隻讀)

tips:

單元格中的提示内容(隻讀)

istemplate: 該單元格是否可填寫(隻讀)

addcontentline: 添加填充内容并換行 

上一篇: html
下一篇: html

繼續閱讀