Fork me on GitHub

【C#】操作word 【Aspose.Words】

上图是要填充的word模板,就是一个接口说明文档。那个像书名号括起来的东西就是要替换的,这个东西并不是键盘输入的书名号,它是文档部件的一种,要插入这个东西需要:
打开模板word文件,用office打开,点击插入,找到下面的文档部件
在点开后弹出的下拉菜单里选择
在弹出的窗口里,选择类别 邮件合并
域名选择MergeFied
最后输入如Cvouchname的字样。
这样我们就添加好了一个域了。
对表格的处理,表格的循环体要这样写<TableStart:headList>表示循环的开始 headList是填充表格的DataTable的名称。<TableEnd:headList>也必须写。
表格里面的 EnField就是自己定义的headList的列名,这个域名和headList的列名相同就会渲染到文档域名处。
做好这些 模板就准备好了。
代码部分:
先使用nuget 安装 Aspose.Words这个组件,没有nuget可以百度Aspose.Words。
//模板里的域
String[] fieldNames = new String[] { "Cvouchname", "Cvouchtype", "BusinessScene", "Cvouchname1","JsonStr" };
var doc = new Document(tempPath);//tempPath为模板路径
//与fieldNames对应的值
Object[] fieldValues = new object[5];
//渲染文档
doc.MailMerge.Execute(fieldNames, fieldValues);
表格部分是这样:
//表格名称 表格列要和文档模板里的一样
DataTable headTable = new DataTable("headList");
                headTable.Columns.Add("EnField");
                headTable.Columns.Add("ChinaField");
                headTable.Columns.Add("FieldMark");
                headTable.Columns.Add("IsMust");
                headTable.Columns.Add("IDNum");
表格的数据自己填充好。
//渲染表格
doc.MailMerge.ExecuteWithRegions(headTable);

红字是这个组件自主渲染上去的。
posted @ 2021-07-07 21:36  HelloLLLLL  阅读(912)  评论(0编辑  收藏  举报