Java 在 Word 文档中查找并替换文本

当我们完成了一个比较大的 Word 文档,却发现其中某个多次出现的人名或是专业术语写错了。如果一个个去改,工作量会非常大。MS Word 包含查找替换功能,可以帮助用户快速找到想要替换的内容并替换为新文本。而 Spire.Doc for Java 则为开发者提供了这样功能,让开发者能够通过代码实现查找并替换文字。本文将介绍如何使用 Spire.Doc for Java 在 Word 文档中快速查找并替换文本为新文本或图片

查找文本并替换所有匹配项为新文本
查找文本并替换第一个匹配项为新项
查找文本并替换为图片

关于如何安装Spire.Office系列组件,在前期文章中已经提到过,此处不再重复

一、查找文本并替换所有匹配项为新文本

只需使用 Spire.Doc for Java 提供的 Document.replace() 方法即可实现快速查找并替换文本为新文本。该方法会替换所有匹配项为新文本,并且支持设置是否区分大小写及是否查找完整搜索词。
查找并替换所有文本的详细操作步骤如下:

创建 Document 类的对象。
用 Document.loadFromFile() 方法载入 Word 文档。
用 Document.replace() 方法将所有“小鹿”的匹配项替换为“水牛”。
用 Document.saveToFile() 方法保存结果文档。

import com.spire.doc.Document;

public class replaceText {

    public static void main(String[] args) {

        //创建 Document 类的对象
        Document document = new Document();

        //载入Word文档
        document.loadFromFile("洞穴艺术.docx");

        //将所有“鹿”的匹配项替换为“水牛”
        document.replace("小鹿", "水牛", false, true);

        //保存结果文档
        document.saveToFile("查找替换.docx");
    }
}
image.png
二、查找文本并替换第一个匹配项为新项

Spire.Doc for Java 也提供了 Document.setReplaceFirst() 方法,用于更改 Document.replace() 方法的替换模式为替换第一个匹配项或替换所有匹配项。
查找文本并替换第一个匹配项的详细操作步骤如下:

创建 Document 类的对象。
用 Document.loadFromFile() 方法载入 Word 文档。
用 Document.setReplaceFirst() 方法将替换模式设置为仅替换第一个匹配项。
用 Document.replace() 方法将 “小鹿”的第一个匹配项替换为“水牛”。
用 Document.saveToFile() 方法保存结果文档。

import com.spire.doc.Document;

public class replaceFirst {
    public static void main(String[] args) {

        //创建 Document 类的对象
        Document document = new Document();

        //载入Word文档
        document.loadFromFile("洞穴艺术.docx");

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

        //将“小鹿”的第一个匹配项替换为“水牛”
        document.replace("小鹿", "水牛", false, true);

        //保存结果文档
        document.saveToFile("查找替换第一个匹配项.docx");
    }
}
image.png
三、查找文本并替换为图片

Spire.Doc for Java 还支持查找文档中的文本并将其替换为图片。首先我们需要查找文本并获取所有匹配项,然后载入图片作为 DocumentObject 对象并插入到匹配项所在位置,最后将匹配项文本删除即可。
查找并替换文本为图片的详细操作步骤如下:

创建 Document 类的对象。
用 Document.loadFromFile() 方法载入 Word 文档。
用 Document.findAllString() 方法查找文档中与“小鹿”匹配的所有匹配项。
在匹配项中循环,将所有匹配项文本替换为载入的图片。
用 Document.saveToFile() 方法保存文档。

import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
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("洞穴艺术.docx");

        //查找文档中与“小鹿”匹配的所有匹配项
        TextSelection[] selections = document.findAllString("小鹿", true, true);

        //循环遍历所有匹配项,替换为载入的图片
        int index = 0;
        TextRange range = null;
        for (Object obj : selections) {

            TextSelection textSelection = (TextSelection)obj;

            //创建 DocPicture 类的对象并载入图片
            DocPicture pic = new DocPicture(document);
            pic.loadImage("小鹿.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("C:/Users/Allen/Desktop/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("查找并替换文本为图片.docx", FileFormat.Docx_2013);
    }
}
image.png

希望能帮助你解决问题,详细信息可前往官网查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容