前言
最近因項目需要要自定義標准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方法在填充文本和圖片后換行。
使用說明
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文檔。
接口
方法如下:
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: 添加填充內容並換行