Apache POI Word 文档书签替换教程 - Java 代码示例
使用 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 文件,并将其添加到你的项目中。
这样应该可以解决你的问题。如果还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/fLZP 著作权归作者所有。请勿转载和采集!