首页 > 编程语言 >C#进行word模板占位符替换的几种工具

C#进行word模板占位符替换的几种工具

时间:2023-06-01 18:24:49浏览次数:41  
标签:XML word C# 占位 文档 Open 模板

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,可以根据使用场景选择合适的工具使用。

标签:XML,word,C#,占位,文档,Open,模板
From: https://www.cnblogs.com/nowar/p/17449842.html

相关文章

  • Collection集合:集合进阶概述
         ......
  • 常用的Java Enum JdbcType
    常用的JavaEnumJdbcTypeARRAYBIGINTBINARYBITBLOBBOOLEANCHARCLOBCURSORDATEDECIMALDOUBLEFLOATINTEGERLONGVARBINARYLONGVARCHARNCHARNCLOBNULLNUMERICNVARCHAROTHERREALSMALLINTSTRUCTTIMETIMESTAMPTINYINTUNDEFINEDVARBINARYVARCHAR参考资料......
  • SMU Spring 2023 Trial Contest Round 11
    A.TheTextSplitting题意:给出字符串长度,给出p和q两种切割方式,任选其中一种,把字符串分割输出结果。 题解:先进行判断,p和q是否能整个的分割n,利用p和q的函数关系判断(见代码),再计算有几个p几个q,再进行输出即可voidsolve(){cin>>n>>p>>q;cin>>s;if(p>......
  • 手把手教你Spring Cloud Alibaba教程:使用Nacos作为配置中心
    我们在上面:手把手教你SpringCloudAlibaba教程:nacos安装手把手教你SpringCloudAlibaba教程:使用nacos实现服务注册与发现了解了nacos和springCloudAlibaba的部署和使用,现在我们来了解下nacos作为配置中心应该如何使用。Nacos除了实现了服务的注册发现之外,还将配置中心功能整合......
  • Java多线程三(线程池执行完后再执行主线程)CountDownLatch
      我们在开发多线程的时候,有两种情况一种是我们处理好后,不用管结果。比如我需要查询某些数据然后存在数据库里。还有一种就是查询好数据(通过线程池),然后导出数据。这个就比较麻烦。因为我们要将数据通过多线程处理后,返回一个统一的结果。(由于多线程是在不同的时候执行数据),假如执......
  • 树莓派opencv的安装
    树莓派安装opencv的教程层出不穷,但是能用的很少。我这个教程是亲自安装成功的。我之前安装过好几次opencv2.49都失败了,唯独这个opencv3.1成功了。下面开始安装吧1.准备sudoapt-getinstallbuild-essentialgitcmakepkg-configsudoapt-getinstallcmakegitlibgtk2.0-......
  • ERROR: Kernel configuration is invalid.
    最简单的linuxhello的驱动源程序//下面是驱动源代码#include<linux/init.h>#include<linux/module.h>staticinthello_init(void){printk(KERN_ALERT"Hello,TekkamanNinja!\n");return0;}staticvoidhello_exit(void){......
  • C语言数组
    数组概念在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。从内存角度,是一片连续的内存空间数组初始化://在编译时明确指定......
  • c语言结构体
    定义结构体变量structStudent{char*name;intage;intscore;};voidmain(){structStudentst1;system("pause");}#include<stdlib.h>#include<string.h>#include<stdio.h>typedefstructStudent{char*nam......
  • C语言链表
    #define_CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<string.h>#include<stdio.h>/*structTeacher{charname[64];intid;char*p;char**p2;};typedefstructTeacherTeacher;*/typedefstructStudent......