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,可以根据使用场景选择合适的工具使用。
C#进行word模板占位符替换的几种工具的更多相关文章
- 关于.net导出数据到excel/word【占位符替换】
1]excel的占位符替换 效果如图 关键代码: ///savedFilePath需要保存的路径 templateDocPath模板路径 替换的关键字和值 格式 [姓名]$%$小王 public st ...
- word模板导出的几种方式:第一种:占位符替换模板导出(只适用于word中含有表格形式的)
1.占位符替换模板导出(只适用于word中含有表格形式的): /// <summary> /// 使用替换模板进行到处word文件 /// </summary> public ...
- C# 利用占位符替换word中的字符串和添加图片
利用占位符替换word中的字符串和添加图片 ///<summary> /// 替换word模板文件内容,包括表格中内容 /// 调用如下:WordStr ...
- Java占位符替换工具类
import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFact ...
- 【Spring源码分析】.properties文件读取及占位符${...}替换源码解析
前言 我们在开发中常遇到一种场景,Bean里面有一些参数是比较固定的,这种时候通常会采用配置的方式,将这些参数配置在.properties文件中,然后在Bean实例化的时候通过Spring将这些.pr ...
- 【占位符替换】替换String中的占位符标志位{placeholder}
概述 占位符替换, 占位符表示为:{placeholder}; 示例:替换如下{xxx}占位符中的内容 "名字:{name},年龄:{age},学校:{school}" 提供了两种 ...
- js使用占位符替换字符串
js使用占位符替换字符串是一个ES6中的模版字符串语法. 在``中使用 ${} var a = 5; var b = 10; console.log(`Fifteen is ${a + b} and ...
- Java{0}占位符替换字符串
Java{0}占位符替换字符串 public class Test { public static void main(String[] args) { System.out.println(Stri ...
- Javascript 占位符替换
String.prototype.format=function(){ if(arguments.length===0){ return String(this); } let reg=/(\{\d\ ...
- POI Word 模板 文字 图片 替换
实验环境:POI3.7+Word2007 Word模板: 替换后效果: 代码: 1.入口文件 public class Test { public static void main(String[] ...
随机推荐
- Go Vue3 CMS管理后台(前后端分离模式)
本后台使用前后端分离模式开发,前端UI为Vue3+Ant Design Vue,后端Api为Go+Gin,解耦前后端逻辑,使开发更专注 技术栈 前端:Vue3,Ant Design Vue,Axios ...
- Mybatis【12】-- Mybatis多条件怎么查询?
很多时候,我们需要传入多个参数给sql语句接收,但是如果这些参数整体不是一个对象,那么我们应该怎么做呢?这里有两种解决方案,仅供参考. 1.将多个参数封装成为Map 测试接口,我们传入一个Map,里面 ...
- idea springboot 微服务批量启动
概要 在使用IDEA开发微服务的时候,微服务比较多,启动起来比较麻烦,下面介绍一下使用批量启动微服务的方法. 方法 编辑当前项目根目录下的 .idea\workspace.xml 文件. 找到 < ...
- BigDecimal数据处理方法总结
前言 BigDecimal是Java编程语言中位于java.math包中的一个类,主要用于进行高精度的十进制数计算.它提供了对任意精度的十进制数进行精确计算的能力,适用于需要保持精度和执行准确计算 ...
- 工欲善其事,必先利其器。如何玩转 VS Code?
Visual Studio Code 作为广受好评的开发工具,已经被越来越多的开发者当作首选的开发工具.然而,你真的了解 VS Code 了吗?你真的会使用 VS Code,把 VS Code 的强大 ...
- ast-hook-for-js-RE安装
# ast-hook-for-js-RE安装 1.项目地址 点我去 2.clone到本地 git clone https://github.com/CC11001100/ast-hook-for-js ...
- manim边学边做--移动动画
在Manim中,其实直线移动的动画非常简单,每个Mobject对象都有animate属性, 通过obj.animate.shift()或者obj.animate.move_to()很容易将对象从一个位 ...
- Docker非root用户修改/etc/hosts文件
本文会讲解在Docker容器环境下,非root用户如何编辑修改/etc/hosts文件. 1.背景和需求描述 环境:Docker 运行用户:非root用户,如普通用户1001 需求:应用运行在容器内, ...
- library initialization failed - unable to allocate file descriptor table - out of memoryAborte
问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...
- Qt编写安防视频监控系统68-兼容Qt4到Qt6
一.前言 为了从Qt4.7兼容到Qt6.2及后续版本,着实花了不少精力,前提也是对自定义控件大全和各种跨平台的轮子组件全部做成了兼容Qt4到Qt6,这样只剩下UI这块需要兼容就好办多了,各个击破战略, ...