Net Core DocXCore 实现word模板导出


实际工作中,往往有这样的需求,需要导出word,还有各种各样的样式,于是有了word模板导出。

实现以下几个需求:

1、表单导出

2、表格导出

3、表单表格混合导出

4、实际用例测试

解决方案:

实现是基于NET Core 2.1 ,搜索了各个开源项目最终基于DocX这个开源库,当初实现时发现DocX作者并没有发布Core的版本,最后在Nuget搜索到DocXCore这个包,但是没有GitHub搜索到这个库。

上面还遇到一个坑爹的问题,系统在win运行没问题,一部署到centos导出就挂了,根据错误研究发现里面居然要获取当前登录的用户信息,win系统没有问题,centos报错,于是去掉获取系统用户这块,居然没有源码。

一怒之下,反编译了DocXCore包,移除了获取登录系统代码,最终win和centos都导出正常。

奉上源码地址:https://github.com/deeround/DocXCore

1、表单导出

模板

640?wx_fmt=png

 代码

640?wx_fmt=png

最终效果

640?wx_fmt=png

 2、表格导出

模板

640?wx_fmt=png

  代码

640?wx_fmt=png

最终效果

640?wx_fmt=png

 

 

 3、表单表格混合导出

模板

640?wx_fmt=png

  代码

640?wx_fmt=png

最终效果

640?wx_fmt=png

4、实例

请看源码

 

简单说明:

采用字符串模板方式替换形式,之前也用过其他方式设置参数,多多少少会遇到些坑,还不如自定义字符串灵活。

#:普通表单关键字使用#包裹

$:表格关键字使用$包裹,里面使用.分割 

源码下载:

 DocXCore源码地址:https://github.com/deeround/DocXCore

上面demo源码:https://files.cnblogs.com/files/deeround/WordExportDemo.zip

 
 

原文链接:https://www.cnblogs.com/deeround/p/11478610.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

640?wx_fmt=jpeg

在 .NET Core 中使用 Novacode 实现 Word 模板导出,需要先添加 Novacode 的 NuGet 包。可以在项目中使用以下命令添加: ``` dotnet add package DocX ``` 然后,可以按照以下步骤实现 Word 模板导出: 1. 创建一个 DocX 对象并加载 Word 模板文件。可以使用以下代码: ```csharp using Novacode; // Load the template file DocX template = DocX.Load("Template.docx"); ``` 2. 使用 ReplaceText 方法替换模板文件中的占位符。例如,如果模板包含占位符 "{Name}",可以使用以下代码将其替换为实际的名称: ```csharp // Replace the placeholder with the actual name template.ReplaceText("{Name}", "John Doe"); ``` 3. 如果模板文件中包含表格,则可以使用 InsertTable 方法添加新表格、使用 AddColumn 和 AddRow 方法添加列和行,以及使用 InsertAt 方法将内容插入表格单元格中。例如,可以使用以下代码向表格中添加一行: ```csharp // Get the table with the specified index Table table = template.Tables[0]; // Add a new row to the table table.InsertRow(); // Get the last row in the table TableRow row = table.Rows.Last(); // Insert data into the cells of the new row row.Cells[0].InsertParagraph("1"); row.Cells[1].InsertParagraph("Apple"); row.Cells[2].InsertParagraph("Red"); ``` 4. 最后,将生成的 Word 文档保存到指定的位置。可以使用以下代码: ```csharp // Save the document to a new file template.SaveAs("Output.docx"); ``` 完整的示例代码如下: ```csharp using Novacode; // Load the template file DocX template = DocX.Load("Template.docx"); // Replace the placeholder with the actual name template.ReplaceText("{Name}", "John Doe"); // Get the table with the specified index Table table = template.Tables[0]; // Add a new row to the table table.InsertRow(); // Get the last row in the table TableRow row = table.Rows.Last(); // Insert data into the cells of the new row row.Cells[0].InsertParagraph("1"); row.Cells[1].InsertParagraph("Apple"); row.Cells[2].InsertParagraph("Red"); // Save the document to a new file template.SaveAs("Output.docx"); ``` 这个例子将模板文件中的 "{Name}" 占位符替换为 "John Doe",向表格中添加一行,然后将结果保存为一个新的 Word 文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值