使用Apache POI操作Word书签:读取、替换和保存
package word;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Word {
public static void main(String[] args) {
try {
// 读取输入文件
XWPFDocument input01Doc = new XWPFDocument(new FileInputStream('input01.docx'));
XWPFDocument input02Doc = new XWPFDocument(new FileInputStream('input02.docx'));
XWPFDocument input03Doc = new XWPFDocument(new FileInputStream('input03.docx'));
// 获取输入文件的书签内容
String bookmark01Content = getBookmarkContent(input01Doc, '应变计');
String bookmark02Content = getBookmarkContent(input02Doc, '位移计');
// 替换输入文件的书签内容
replaceBookmarkContent(input03Doc, '应变计', bookmark01Content);
replaceBookmarkContent(input03Doc, '位移计', bookmark02Content);
// 保存新文件
FileOutputStream outputDoc = new FileOutputStream('input04.docx');
input03Doc.write(outputDoc);
outputDoc.close();
System.out.println('替换完成!');
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getBookmarkContent(XWPFDocument doc, String bookmarkName) {
for (XWPFParagraph paragraph : doc.getParagraphs()) {
for (XWPFRun run : paragraph.getRuns()) {
if (run != null) {
CTRun ctRun = run.getCTR();
for (CTBookmark bookmark : ctRun.getBookmarkStartArray()) {
if (bookmark.getName().equals(bookmarkName)) {
return ctRun.getText(0);
}
}
}
}
}
return null;
}
private static void replaceBookmarkContent(XWPFDocument doc, String bookmarkName, String content) {
for (XWPFParagraph paragraph : doc.getParagraphs()) {
for (XWPFRun run : paragraph.getRuns()) {
if (run != null) {
CTRun ctRun = run.getCTR();
for (CTBookmark bookmark : ctRun.getBookmarkStartArray()) {
if (bookmark.getName().equals(bookmarkName)) {
ctRun.setText(content, 0);
}
}
}
}
}
}
}
代码说明:
- 这段Java代码使用了Apache POI库来操作Word文档(.docx)。
getBookmarkContent方法用于获取指定书签的内容。replaceBookmarkContent方法用于替换指定书签的内容。- 主函数中演示了如何读取三个Word文档,获取其中两个文档中指定书签的内容,并将内容替换到第三个文档中,最后保存新的Word文档。
使用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>
原文地址: https://www.cveoy.top/t/topic/fMbX 著作权归作者所有。请勿转载和采集!