Java查找与替换Word文档文本的实现方案

 更新时间:2026年06月26日 11:34:10   作者:缺点内向  
在文档处理工作中,批量修改文本内容是一项高频需求,本文将介绍如何利用 Java 语言,基于 Spire.Doc for Java 库实现 Word 文档中的文本查找与替换功能,有需要的小伙伴可以了解下

在文档处理工作中,批量修改文本内容是一项高频需求。无论是更正文档中反复出现的错误术语、更新合同模板中的占位信息,还是将特定文本替换为图片,通过编程方式实现查找与替换都能显著提升工作效率。本文将介绍如何利用 Java 语言,基于 Spire.Doc for Java 库实现 Word 文档中的文本查找与替换功能。

环境配置

本文示例所使用的库为 Spire.Doc for Java。若使用 Maven 管理项目依赖,可在 pom.xml 中添加以下配置:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.6.0</version>
    </dependency>
</dependencies>

对于不使用 Maven 的项目,可手动下载 JAR 文件并添加到项目的类路径中。

替换所有匹配文本

Document.replace() 方法是实现批量文本替换的核心 API。该方法默认替换文档中所有匹配的目标文本,并支持区分大小写和全字匹配两种查找模式。

参数说明:

  • 第一个参数:要查找的文本
  • 第二个参数:替换后的新文本
  • 第三个参数:是否区分大小写(true 为区分)
  • 第四个参数:是否全字匹配(true 为仅匹配完整单词)
import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class ReplaceAllMatches {
    public static void main(String[] args) {
        Document document = new Document();
        document.loadFromFile("示例文档.docx");

        // 将文档中所有"旧术语"替换为"新术语"
        // 第三个参数false表示不区分大小写,第四个参数 true 表示全字匹配
        document.replace("旧术语", "新术语", false, true);

        document.saveToFile("替换结果.docx", FileFormat.Docx_2013);
        document.dispose();
    }
}

替换第一个匹配项

某些场景下,开发者只需替换文档中首次出现的特定文本。可通过 Document.setReplaceFirst(true) 方法将替换模式调整为仅处理第一个匹配项。

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

public class ReplaceFirstMatch {
    public static void main(String[] args) {
        Document document = new Document();
        document.loadFromFile("示例文档.docx");

        // 设置为仅替换第一个匹配项
        document.setReplaceFirst(true);

        document.replace("旧术语", "新术语", false, true);

        document.saveToFile("替换首个匹配项.docx", FileFormat.Docx_2013);
        document.dispose();
    }
}

批量替换多个词汇

当需要同时替换多个不同的关键词时,可使用 Map 存储替换规则,通过遍历逐一执行替换操作。

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import java.util.HashMap;
import java.util.Map;

public class ReplaceMultipleTerms {
    public static void main(String[] args) {
        Document document = new Document();
        document.loadFromFile("模板文档.docx");

        Map<String, String> replaceMap = new HashMap<>();
        replaceMap.put("#客户名称#", "张三科技有限公司");
        replaceMap.put("#联系人#", "李经理");
        replaceMap.put("#日期#", "2026年6月22日");

        for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
            document.replace(entry.getKey(), entry.getValue(), true, true);
        }

        document.saveToFile("批量替换结果.docx", FileFormat.Docx_2013);
        document.dispose();
    }
}

该方法特别适用于基于模板批量生成合同、报告或通知等场景。

将文本替换为图片

Spire.Doc for Java 支持将文档中的文本占位符替换为图片。实现思路是先查找目标文本的所有匹配项,然后在每个匹配位置插入图片对象,最后删除原始文本。

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.documents.TextSelection;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;

public class replaceTextWithImage {

    public static void main(String[] args) {

        // 创建 Document 类实例
        Document document = new Document();

        // 加载 Word 文档
        document.loadFromFile("Cave Art.docx");

        // 查找文档中所有匹配 "deer" 的字符串
        TextSelection[] selections = document.findAllString("deer", true, true);
        
        // 将所有匹配项替换为图片
        int index = 0;
        TextRange range = null;
        for (Object obj : selections) {

            TextSelection textSelection = (TextSelection)obj;
            
            // 创建 DocPicture 对象并加载图片
            DocPicture pic = new DocPicture(document);
            pic.loadImage("deer.png");
            
            range = textSelection.getAsOneRange();
            index = range.getOwnerParagraph().getChildObjects().indexOf(range);
            range.getOwnerParagraph().getChildObjects().insert(index, pic);
            range.getOwnerParagraph().getChildObjects().remove(range);
        }
        
        // 将特定匹配项替换为图片(注释部分)
        // 创建 DocPicture 对象并加载图片
        // DocPicture pic = new DocPicture(document);
        // pic.loadImage("deer.png");
        // Object object = selections[1];
        // TextSelection selection = (TextSelection) object;
        // TextRange textRange = selection.getAsOneRange();
        // int i = textRange.getOwnerParagraph().getChildObjects().indexOf(textRange);
        // textRange.getOwnerParagraph().getChildObjects().insert(i, pic);
        // textRange.getOwnerParagraph().getChildObjects().remove(textRange);

        // 保存文档
        document.saveToFile("ReplaceTextWithImage.docx", FileFormat.Docx_2013);
    }
}

应用场景与注意事项

  • 合同与报告生成:通过批量替换占位符,可快速生成规范化文档
  • 术语统一修正:批量更正文档中反复出现的错误用词或旧版术语
  • 模板填充:结合 Map 规则,将模板中的标记替换为实际数据

查找精度replace() 方法的第三个参数控制是否区分大小写,第四个参数控制是否全字匹配。在处理英文内容时,合理设置这两个参数可避免非预期的替换结果。

资源管理:操作完成后调用 dispose() 方法释放文档对象占用的资源,是规范的编码实践。

总结

本文介绍了基于 Java 语言在Word文档中实现文本查找与替换的技术方案。通过 Document.replace() 方法可快速完成全局文本替换,配合 setReplaceFirst(true) 可实现仅替换首次匹配项。对于多词汇批量更新,使用 Map 存储替换规则后遍历执行是高效的方式。此外,通过 findAllString() 定位匹配位置并结合图片插入与文本删除操作,可将文本占位符替换为图片。这些方法在合同生成、报告制作和文档批量更新等场景中具有实用价值,能够帮助开发者以编程方式高效完成文档内容的批量修改任务。

到此这篇关于Java查找与替换Word文档文本的实现方案的文章就介绍到这了,更多相关Java查找与替换Word文本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC @RequestBody的使用解析

    SpringMVC @RequestBody的使用解析

    这篇文章主要介绍了SpringMVC @RequestBody的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • SpringMVC中的@RequestMapping注解解析

    SpringMVC中的@RequestMapping注解解析

    这篇文章主要介绍了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义处都可标注@RequestMapping,需要的朋友可以参考下
    2023-12-12
  • 基于resty security的Api权限控制与事务支持

    基于resty security的Api权限控制与事务支持

    这篇文章主要为大家介绍了基于resty security的Api权限控制与事务支持让数据操作处于事务控制下,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • 浅谈Java锁机制

    浅谈Java锁机制

    在多线程环境下,程序往往会出现一些线程安全问题,为此,Java提供了一些线程的同步机制来解决安全问题,比如:synchronized锁和Lock锁都能解决线程安全问题。下面小编就来详细介绍该知识点,需要的朋友可以参考一下
    2021-09-09
  • SpringBoot实现健康检查的完整指南

    SpringBoot实现健康检查的完整指南

    本文介绍了Spring Boot实现健康检查的方法,包括使用Actuator进行应用健康检查,自定义健康检查项目,搭建可视化监控大屏和配置告警系统,此外,还提供了实战案例和避坑指南,帮助读者更好地理解和应用Spring Boot健康检查功能,需要的朋友可以参考下
    2025-12-12
  • SpringBoot 整合 Netty 多端口监听的操作方法

    SpringBoot 整合 Netty 多端口监听的操作方法

    Netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,这篇文章主要介绍了SpringBoot 整和 Netty 并监听多端口,需要的朋友可以参考下
    2023-10-10
  • SpringBoot配置文件高级用法实战分享

    SpringBoot配置文件高级用法实战分享

    Spring Boot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用,本文给大家介绍了SpringBoot配置文件高级用法实战,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • mybatis的映射xml中动态设置orderby方式

    mybatis的映射xml中动态设置orderby方式

    这篇文章主要介绍了mybatis的映射xml中动态设置orderby方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java新特性之Nashorn_动力节点Java学院整理

    Java新特性之Nashorn_动力节点Java学院整理

    这篇文章主要介绍了Java新特性之Nashorn的相关资料,需要的朋友可以参考下
    2017-06-06
  • Spring Boot集成sa-token的项目实践

    Spring Boot集成sa-token的项目实践

    本文主要介绍了Spring Boot集成sa-token的项目实践,实现了基本的登录和权限控制功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论