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. elasticsearch之python操作

    总结使用python对于elasticsearch的常用操作 安装 pip install elasticsearch 2. 连接 from elasticsearch import Elastics ...

  2. CF926 Div.2

    C. Sasha and the Casino 赌场规则:如果下注 \(y(y > 0)\) 元,如果赢了则除了 \(y\) 元外,额外获得 \(y \times (k - 1)\) 元,否则则 ...

  3. 搭建一个文件存储服务器minio,实现文件存储

    搭建一个文件存储服务器minio,实现文件存储 Minio是一个开源的.自托管的对象存储服务器,它提供了类似于云存储服务的功能.你可以使用Minio搭建自己的私有云存储解决方案,或者作为公共存储服务的 ...

  4. 禁用SAP Hana错误密码锁定用户功能

    背景 公司项目适配多种数据库其中包含SAP Hana,由于有同事的数据库连接工具保存了某个在用的数据库的旧密码,导致时不时会被锁用户.通过查询官方文档已解决,这里统一记录一下. 禁用密码锁定方法 以下 ...

  5. 鸿蒙UI开发快速入门 —— part03: 组件的生命周期

    1. 什么是组件的生命周期 组件的生命周期是我们开发一个组件必须要关注的内容,组件的生命周期,指的是组件的创建.渲染.销毁等过程.因为这个过程就类似于人从出生到离世的过程,从而称为:组件的生命周期. ...

  6. 你应该了解的hooks式接口编程 - useSWR

    什么是 useSWR ? 听名字我们都知道是一个 React 的 hooks,SWR 是stale-while-revalidate的缩写, stale 的意思是陈旧的, revalidate 的意思 ...

  7. MAC清理

    今日分享 Mac清理 有很多三方软件可以清理,以前用过腾讯的柠檬lite,每次就清个几百兆,系统数据感觉还是得自己手动清理才行 今天电脑又在提醒储存空间不足了,一看占用发现系统数据占了100多个G,学 ...

  8. Mac中nginx的默认安装路径和启动方式

    1.安装完以后,可以在终端输出的信息里看到一些配置路径: /usr/local/etc/nginx/nginx.conf (配置文件路径) /usr/local/var/www (服务器默认路径) / ...

  9. Qt开发经验小技巧261-265

    代码中判断当前Qt库是32位还是64位,用QSysInfo::WordSize=32/64. QTreeView控件设置左侧branch图标大小,无法通过qss设置,万能大法查看源码得知控制宽度最后取 ...

  10. 关于Qt数据库开发的一些冷知识

    一.知识要点 Qt即支持库的形式直接和数据库通信,也支持ODBC数据源的形式和各种数据库通信,这样就涵盖了所有的情况. Qt数据库程序打包发布,所有前提:注意区分32/64位,你的程序是32位的就必须 ...