使用 Apache POI 替换 Word 文档中的书签内容

本教程演示如何使用 Apache POI 库在 Java 中替换 Word 文档中的书签内容。

代码示例:

package word;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class Word {
    public static void main(String[] args) {
        String input01 = 'input01.docx';
        String input03 = 'input03.docx';
        String output = 'input04.docx';

        try {
            // 读取 input01.docx 文件
            XWPFDocument doc01 = new XWPFDocument(new FileInputStream(input01));

            // 读取 input03.docx 文件
            XWPFDocument doc03 = new XWPFDocument(new FileInputStream(input03));

            // 获取 input03.docx 中应变计书签的内容
            String bookmarkContent = doc03.getBookmarkStart('bookmarkName').getText();

            // 获取 input01.docx 中应变计书签的位置
            int bookmarkStartPos = doc01.getPosOfBookmark('bookmarkName');
            int bookmarkEndPos = doc01.getBookmarkEnd('bookmarkName').getCTBookmark().getDomNode().getSiblingIndex();

            // 替换 input01.docx 中应变计书签的内容
            for (XWPFRun run : doc01.getParagraphs().get(bookmarkStartPos).getRuns()) {
                run.setText(bookmarkContent, 0);
            }

            // 保存新文件
            FileOutputStream out = new FileOutputStream(output);
            doc01.write(out);
            out.close();

            System.out.println('替换完成并保存为' + output);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解决办法:

这个问题可能是因为你使用的 Apache POI 版本不兼容导致的。请确保你使用的是最新版本的 Apache POI 库。

你可以在 Maven 项目中添加以下依赖项来使用最新版本的 Apache POI:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

如果你不使用 Maven,你可以从 Apache POI 的官方网站下载最新版本的 JAR 文件,并将其添加到你的项目中。

这样应该可以解决你的问题。如果还有其他问题,请随时提问。

Apache POI Word 文档书签替换教程 - Java 代码示例

原文地址: https://www.cveoy.top/t/topic/fLZP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录