C# Aspose.Word 操作word文档(利用模板)
上一篇我們介紹了用書簽的方式來填充word中數據,今天介紹第二種方法操作word!
依舊是先自己建好word模板,然后這里就不需要插入書簽了。
1、建立模板
能看到紅色標示的區域依舊用到了書簽,沒事我們全刪掉,如下圖:
2、分析下為什么不用書簽了,因為我的數據是動態生成的,而且不止一條,有很多條,所以這時候書簽就起不到作用了,當然你也可以放在一個書簽里,但是內容都在一個書簽單元格里,會很恐怖的,而且不符合客戶需求。
3、編寫代碼:
????????????string tempFile = Path.GetFullPath("resource/templete/項目建議書模板.doc").ToString();
????????????Document doc = new Document(tempFile);
????????????DocumentBuilder builder = new DocumentBuilder(doc);
????????????NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true); //獲取word中所有表格table
????????????Aspose.Words.Tables.Table table1 = allTables[0] as Aspose.Words.Tables.Table;//拿到第1個表格
????????????var roww1 = table1.Rows[14]; //獲取第14行
????????????for (int i = 0; i < dt2.Rows.Count - 1; i++) ???//dt2為數據源 ?datatable
????????????{
????????????????var row1 = roww1.Clone(true);//復制第14行
????????????????table1.Rows.Insert(14 + i, row1);//將復制的行插入當前行的上方
????????????????builder.MoveToCell(0, 14 + i, 1, 0); //移動到第一個表格的第十四行第一個格子
????????????????builder.Write(dt2.Rows[i]["MingCheng"].ToString()); //單元格填充文字
????????????????builder.MoveToCell(0, 14 + i, 2, 0); //移動到第一個表格的第十四行第二個格子
????????????????builder.Write(dt2.Rows[i]["GuiGeXingHao"].ToString()); //單元格填充文字
????????????????builder.MoveToCell(0, 14 + i, 3, 0); //移動到第一個表格的第十四行第三個格子
????????????????builder.Write(dt2.Rows[i]["DanWei"].ToString()); //單元格填充文字
????????????????builder.MoveToCell(0, 14 + i, 4, 0); //移動到第一個表格的第十四行第四個格子
????????????????builder.Write(dt2.Rows[i]["ShuLiang"].ToString()); //單元格填充文字 ??????????????????????
????????????}
????????????table1.Rows.RemoveAt(14 + dt2.Rows.Count - 1); //移除多余的空行
????????????doc.Save(tempFile);
????????????
4、效果圖:
總結
以上是生活随笔為你收集整理的C# Aspose.Word 操作word文档(利用模板)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: axios 中文文档、使用说明
- 下一篇: Quartz 之入门示例