C#采用OpenXml给Word文档添加表格
程序员文章站
2023-12-19 15:22:04
本文实例讲述了c#采用openxml给word文档添加表格的方法,是非常实用的操作技巧。分享给大家供大家参考。具体分析如下:
这里将展示如何使用openxml向word添...
本文实例讲述了c#采用openxml给word文档添加表格的方法,是非常实用的操作技巧。分享给大家供大家参考。具体分析如下:
这里将展示如何使用openxml向word添加表格. 代码中表头和数据我们用的同一个tablerow来添加,其实可以通过tableheader来,其实都一样。后面我们还会进一步给出如何设置单元格样式。表头那一行可以自己通过设置样式来控制
示例代码如下:
using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks; using documentformat.openxml; using documentformat.openxml.packaging; using documentformat.openxml.wordprocessing; namespace addtabletoword { public class program { public static void main(string[] args) { list<string[]> lstdata = new list<string[]>() { new string[] { "1", "2", "3" }, new string[] { "3", "2", "1" } }; string[] headerarray = new string[] { "a", "b", "c" }; addtable("test.docx", lstdata, headerarray); } /// <summary> /// word里面添加table /// </summary> /// <param name="wordpath">word文件路径</param> /// <param name="lstdata">数据</param> /// <param name="headerarray">表头</param> public static void addtable(string wordpath, list<string[]> lstdata, string[] headerarray) { using (wordprocessingdocument doc = wordprocessingdocument.open(wordpath, true)) { tablegrid grid = new tablegrid(); int maxcolumnnum = lstdata.select(x => x.count()).max(); for (int index = 0; index < maxcolumnnum; index++) { grid.append(new tablegrid()); } // 设置表格边框 tableproperties tblprop = new tableproperties( new tableborders( new topborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }, new bottomborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }, new leftborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }, new rightborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }, new insidehorizontalborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 }, new insideverticalborder() { val = new enumvalue<bordervalues>(bordervalues.single), size = 2 } ) ); table table = new table(); table.append(tblprop); // 添加表头. 其实有tableheader对象的,小弟用不来. tablerow headerrow = new tablerow(); foreach (string headerstr in headerarray) { tablecell cell = new tablecell(); cell.append(new paragraph(new run(new text(headerstr)))); headerrow.append(cell); } table.append(headerrow); // 添加数据 foreach (string[] rowarray in lstdata) { tablerow row = new tablerow(); foreach (string strcell in rowarray) { tablecell cell = new tablecell(); cell.append(new paragraph(new run(new text(strcell)))); row.append(cell); } table.append(row); } doc.maindocumentpart.document.body.append(new paragraph(new run(table))); } } } }
执行呈现结果如下:
希望本文所述对大家的c#程序设计有所帮助