我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java如何使用spire进行word文档的替换详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java如何使用spire进行word文档的替换详解

前言

今天遇到一个需求,需要对word模板进行替换制定的变量

在网上找了很多方案,做了很多的demo,下面就把我觉得比较简单的一种分享给大家

本次的主角是:spire.doc

spire.doc是专门实现对word的操作(包括文字,表格,图片)

spire.doc介绍

Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET类库。这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。作为一款独立的 Word .NET 控件,Spire.Doc for .NET 的运行系统(服务器端或客户端)均无需安装 Microsoft Word,但是它却可以将 Microsoft Word 文档的操作功能集成到任何开发人员的 .NET 应用程序中。

Spire.Doc for .NET 能执行多种 Microsoft Word 文档处理任务的 .NET API。支持 Word97-2003,Word2007,Word2010 以及 Word2013。能在 Word 97/2003/2007/2010/2013 和 XML、RTF、TXT、XPS、EPUB、EMF、HTML、ODT 等格式文件之间进行双向转换,还能将 Word 文件高质量地转换为 PDF 和 SVG 文件格式。

具体使用可以参考文档: Spire.Doc for .NET 中文教程

前提准备

准备word模板

准备一个word文件,里面简单写点模板:

引入spire.do依赖

spire.doc比较小众,因此需要在pom.xml中导入spire.doc的仓库,导入之后直接导包,如果不配置仓库直接下载依赖是不行的!

	  <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>3.9.0</version>
        </dependency>
        
		 <repositories>
		        <repository>
		            <id>com.e-iceblue</id>
		            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
		        </repository>
		    </repositories>

案例演示

前提工作准备好之后,就可以开始编写demo了

单个内容替换

短短的三行代码,就完成了读取,替换,保存的功能:

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;



public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //使用新文本替换文档中的指定文本
        document.replace("${name}", "张三丰", false, true);
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test2.docx", FileFormat.Docx_2013);
    }
}

这时候打开桌面生成的文件查看,${name}的变量以及被替换掉了

但是这只是单独替换一个变量,一般一个模板里面是会有很多的变量的,这事我们需要支持批量替换变量

批量内容替换

想要实现批量内容替换,其实也很简单,还是拿上面举例的模板进行操作:

方式1

笨点的方式:既然我们使用的是document.replace进行替换,那么模板里面有多少个变量,我们就写多少个document.replac即可:

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;



public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //使用新文本替换文档中的指定文本
        document.replace("${name}", "张三丰", false, true);
        document.replace("${age}", "18", false, true);
        document.replace("${sex}", "男", false, true);
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test2.docx", FileFormat.Docx_2013);
    }
}

虽然笨,但是可行:

方式2

虽然上面的方式可行,但是维护起来比较麻烦,这时候我们可以采取这种方式:

声明一个map,把一组组的key和value进行保存,key就是变量, value就是模板值,然后循环map进行替换,这样不管多少个变量,我们都只需要在map里配置即可

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

import java.util.HashMap;
import java.util.Set;



public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //模板变量map
        HashMap<String, Object> paramsMap = new HashMap<>();
        // 填充key和vaulue key=模板变量,value=替换后的值
        paramsMap.put("${name}","张三丰");
        paramsMap.put("${age}","18");
        paramsMap.put("${sex}","男");
        // 循环key
        for(String key:paramsMap.keySet()){
            // 根据key得到value
            String value = paramsMap.get(key).toString();
            //使用新文本替换文档中的指定文本 也就是value替换key
            document.replace(key, value, false, true);
        }
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test3.docx", FileFormat.Docx_2013);
    }
}

再次运行代码,文档里面的变量以及全部完成了替换。

总结

能够实现这样的例子很多,我个人也花了两天试了很多的demo,包括Apache下的poi的XWPFDocument,Java File文件流等,经过大量的常识,我个人更倾向于这种方式,不仅代码量少,而且spire本身就是支持对于word文档操作的,功能更多且强大。所以在次推荐给大家

到此这篇关于Java如何使用spire进行word文档的替换详解的文章就介绍到这了,更多相关Java spire对word文档替换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java如何使用spire进行word文档的替换详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java如何使用spire进行word文档的替换详解

创作一份文案经常会高频率地使用某些词汇,如地名、人名、人物职位等,若表述有误,就需要整体撤换,下面这篇文章主要给大家介绍了关于Java如何使用spire进行word文档的替换的相关资料,需要的朋友可以参考下
2023-01-09

Java项目中的word文档如何利用Freemarker进行导出

本篇文章给大家分享的是有关Java项目中的word文档如何利用Freemarker进行导出,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现步骤1.用Microsoft Off
2023-05-31

使用Go语言进行PDF到Word文档转换的高效解决方案

使用Go语言将PDF转换为Word文档的完善方案前言PDF和Word都是常用的文档格式,在不同的场景下,我们需要在它们之间进行转换。Go语言提供了丰富的库和工具,可以帮助我们轻松实现PDF到Word的转换。本文将介绍一个使用Go语言将P
使用Go语言进行PDF到Word文档转换的高效解决方案
2024-01-31

如何在Word中对损坏的文档进行疑难解答

如果在Word中遇到损坏的文档,可以尝试以下疑难解答方法:1. 尝试打开文档恢复功能:在Word中,点击“文件”选项卡,然后选择“打开”,找到损坏的文档,在文件名旁边点击下拉箭头,在下拉菜单中选择“打开并修复”。2. 使用“打开并修复”功能
2023-09-08

详解Python如何使用Netmiko进行文件传输

Netmiko是一个用于连接和管理各种网络设备的Python库,它是Paramiko的一个扩展。本文就来讲讲如何利用Netmiko实现文件传输功能吧
2023-05-18

如何使用PHP中的preg_replace()函数进行正则表达式替换

如何使用PHP中的preg_replace()函数进行正则表达式替换正则表达式是一种强大的模式匹配工具,在PHP中,使用preg_replace()函数可以实现对字符串进行正则表达式替换。本文将介绍如何使用preg_replace()函数进
如何使用PHP中的preg_replace()函数进行正则表达式替换
2023-11-18

如何使用lxml进行XML文档的数据库存储和检索

使用lxml库可以方便地对XML文档进行数据库存储和检索操作。下面是使用lxml库进行XML文档的数据库存储和检索的基本步骤:导入lxml库和相关模块:from lxml import etree创建一个XML文档对象并加载XML文档:tr
如何使用lxml进行XML文档的数据库存储和检索
2024-05-15

一文详解如何在前端使用JS进行分类汇总

这篇文章主要给大家介绍了关于如何在前端使用JS进行分类汇总的相关资料,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,需要的朋友可以参考下
2023-05-14

如何使用Linux文本操作命令ed进行提权nov5详解

前言 本文我将为大家介绍一个面向行的文本编辑器命令“ed”,它主要用于生成,显示,更改和操作文本文件。所有ed命令都在行或行范围内执行操作;例如,“d”命令删除行;“m”命令移动行,“t”命令复制行等等。现在,我们要做的就是利用这些“ed”
2022-06-04

PHP如何使用xlswriter进行大数据的导入导出?(详解)

PHP如何使用xlswriter进行大数据的导入导出?下面本篇文章给大家介绍一下PHP大数据xlswriter导入导出(最优数据化)的方法,希望对大家有所帮助!本文介绍基于PHP扩展xlswriter的Vtiful\Kernel\Excel类可以支持无限层级的复杂表头导出!后续也可能会持续更新优化一、准备xlswriter扩展1、windows系统:到PECL网站下载符合自己本地PHP环境的ddl文
2022-07-07

如何使用pip命令进行Python开发者必看的安装方法详解

Python开发者必看:pip命令安装方法详解引言:Python是一种广泛使用的高级编程语言,拥有庞大的开发者社区和生态系统。为了方便Python开发者管理和使用第三方库,Python提供了一个强大的包管理工具——pip。本文将详细解释p
如何使用pip命令进行Python开发者必看的安装方法详解
2024-01-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录