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

C#进行word模板占位符替换的几种工具的更多相关文章

  1. 关于.net导出数据到excel/word【占位符替换】

    1]excel的占位符替换 效果如图 关键代码: ///savedFilePath需要保存的路径 templateDocPath模板路径 替换的关键字和值 格式 [姓名]$%$小王 public st ...

  2. word模板导出的几种方式:第一种:占位符替换模板导出(只适用于word中含有表格形式的)

    1.占位符替换模板导出(只适用于word中含有表格形式的): /// <summary> /// 使用替换模板进行到处word文件 /// </summary> public ...

  3. C# 利用占位符替换word中的字符串和添加图片

    利用占位符替换word中的字符串和添加图片   ///<summary>         /// 替换word模板文件内容,包括表格中内容         /// 调用如下:WordStr ...

  4. Java占位符替换工具类

    import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...

  5. 【Spring源码分析】.properties文件读取及占位符${...}替换源码解析

    前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.pr ...

  6. 【占位符替换】替换String中的占位符标志位{placeholder}

    概述 占位符替换, 占位符表示为:{placeholder}; 示例:替换如下{xxx}占位符中的内容 "名字:{name},年龄:{age},学校:{school}" 提供了两种 ...

  7. js使用占位符替换字符串

    js使用占位符替换字符串是一个ES6中的模版字符串语法. 在``中使用 ${} var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and ...

  8. Java{0}占位符替换字符串

    Java{0}占位符替换字符串 public class Test { public static void main(String[] args) { System.out.println(Stri ...

  9. Javascript 占位符替换

    String.prototype.format=function(){ if(arguments.length===0){ return String(this); } let reg=/(\{\d\ ...

  10. POI Word 模板 文字 图片 替换

    实验环境:POI3.7+Word2007 Word模板: 替换后效果: 代码: 1.入口文件 public class Test { public static void main(String[] ...

随机推荐

  1. 2023 秋季学期 六周集训 Misc方向

    by 高鹏鸿.密语 写在前面,记录和交流是一个很好的习惯,建议可以自己先搭建一个博客用于存储自己的做题记录以及方便交流.还有,对于Misc方向,灵活应对十分重要,一定要善用搜索引擎. 还有一点,给大家 ...

  2. oracle客户端安装先决条件检查出现PRVF-7531错误

    场景:在局域网内,远程一台客户机进行客户端安装 度娘后,说一般情况下,由于操作系统未开启默认共享,导致Oracle无法检查环境的可用性. 查看server服务正常开启. 通过net share将c进行 ...

  3. OS之《线程管理》

    进程是系统资源分配的最小单位,线程是最小的执行单位. 然而,现在的高级设计底层还是基于这个理论基础实现的.比如java的线程,还有最新版本的JDK的协程都是在为了更好的让CPU执行任务. 线程是为了使 ...

  4. 【Amadeus原创】docker安装TOMCAT,并运行本地代码

    1,docker 下载tomcat [root@it-1c2d ~]# docker pull tomcat ... [root@it-1c2d ~]# docker images REPOSITOR ...

  5. Redis应用—5.Redis相关解决方案

    大纲 1.数据库与缓存一致性方案 2.热key探测系统处理热key问题 3.缓存大value监控和切分处理方案 4.Redis内存不足强制回收监控告警方案 5.Redis集群缓存雪崩自动探测 + 限流 ...

  6. Java8使用Stream实现List中对象属性的合并(去重并求和)

    前言 在需求开发中,我们需要对一个List中的对象进行唯一值属性去重,属性求和,对象假设为Pool,有name.value两个属性,其中name表示唯一值,需要value进行求和,并最后保持一份对象. ...

  7. 【COS 加码福利】COS 用户实践有奖征文,等你来投稿!

    COS用户实践征文活动火热进行中,本次征集主题为:如何在生态场景下使用 COS? 优质文章将有机会被编入腾讯云官方文档库,供广大用户学习参考.更有多重好礼等你来拿,速来围观投稿吧! 投稿说明: 1.投 ...

  8. Qt程序员必看/关于Qt收费的官方答复

    一.答复说明 Qt软件从诞生之日就是GPL/LGPL开源授权和商业授权并存的,开源不代表免费而是为了共享.关于您的问题,我做大致的回复. Qt商用版本的模块是否都是LGPL协议,所有模块是否存在GPL ...

  9. Qt编写地图综合应用60-覆盖物坐标和搜索

    一.前言 地图应用中有时候需要开启悬浮工具栏,用户可以直接在地图上绘制矩形.多边形.圆形.线条等,于是需要提供一个函数接口,能够获取到用户绘制的这些图形形状对应的信息.比如坐标点.圆形的中心点和半径. ...

  10. Qt编写地图综合应用19-地图服务

    一.前言 国内提供地图服务的厂家基本上是五家,百度地图.高德地图.腾讯地图.搜狗地图.天地图,国外的一般还有谷歌地图.微软地图(BING地图),这几家的地图服务的api接口都大同小异,甚至很多函数的名 ...