C#进行word模板占位符替换的几种工具
word模板中,包含一些需要替换的项,比如{{姓名}} {{年龄}}或者$姓名$ $年龄$,从数据库获取信息后,对模板进行替换操作生成新的word文档。
简单对以下四种工具做了一下测试:
1.NPOI:
是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目
NPOI操作word的功能很强大,但是读取占位符时,有一个问题,那就是占位符必需从记事本复制粘贴进word文件,如果是手工打字输入的,占位符会被分割为多段({{ ,姓名,}})。
2.Spire.Doc:
Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库,同时兼容大部分国产操作系统,能够在中标麒麟和中科方德等国产操作系统中正常运行。
使用体会:网上使用教程比较多,功能强大,操作word的代码简单,手工输入的占位符,虽然也是识别到3个run,但是会自动合并成一个字符串。
这是一个收费控件,官网信息比较全面,有完善的帮助文档,有一些常用的demo,不差钱的推荐使用。免费版本有一些功能删减,但是常用功能都还是支持的。
3.miniWord:
.NET Word(docx) 模版导出引擎不需要安装 Office COM+ 支持 Linux 和 Mac
使用体会:主打功能是通过word模板生成新的word文件,功能相对简单点,但是模板数据替换这块代码还是很简捷的,也存在无法正常识别手打占位符,但是在word里剪切再粘贴后可以识别。
有一点需要注意的,是占位符只能使用{{tag}}花括号这种形式,其它形式还不支持。
4.OpenXml:
Open XML标准的简单介绍:Ecma Office Open XML(“Open XML”)是针对字处理文档、演示文稿和电子表格的国际化开放标准,可免费供多个应用程序在多个平台上实现。Microsoft Office(2007、2003、XP、2000)、OpenOffice Novell Edition、开源项目 Gnumeric、Neo-Office 2.1 和 PalmOS(Dataviz) 已经支持 Open XML。Corel 已经宣布在 WordPerfect 2007 中提供 Open XML 支持,全球的开发人员 正在使用 OpenXML 构建解决方案。
使用体会:读取和操作word的功能很强大,代码更加原生态,针对word模板替换这块,也存在无法正常识别手打占位符的问题。
总体来说,以上四种工具各有所长,有的功能强大,有的功能简洁,同时都支持net core,可以根据使用场景选择合适的工具使用。