Java Apache POI Word 文档书签内容复制 - 使用指南
使用 Java Apache POI 将 Word 文档内容复制到书签位置
本指南介绍如何使用 Java Apache POI 库将一个 Word 文档的内容复制到另一个 Word 文档的书签位置。
代码示例
package word;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Word {
public static void main(String[] args) {
try {
// 打开 input01.docx 文件
FileInputStream fis = new FileInputStream("08-00计算公式(第1版).docx");
XWPFDocument doc1 = new XWPFDocument(OPCPackage.open(fis));
// 打开 input03.docx 文件
FileInputStream fis2 = new FileInputStream("input03.docx");
XWPFDocument doc2 = new XWPFDocument(OPCPackage.open(fis2));
// 获取'应变计'书签位置的段落
XWPFParagraph bookmarkParagraph = doc2.getParagraphs().stream()
.filter(p -> p.getCTP().getBookmarkStartList().stream()
.anyMatch(b -> b.getName().equals("应变计")))
.findFirst().orElse(null);
if (bookmarkParagraph != null) {
// 清空'应变计'书签位置的段落内容
for (int i = bookmarkParagraph.getRuns().size() - 1; i >= 0; i--) {
bookmarkParagraph.removeRun(i);
}
// 复制 input01.docx 文件的内容到'应变计'书签位置的段落
for (XWPFParagraph paragraph : doc1.getParagraphs()) {
XWPFParagraph newParagraph = doc2.createParagraph();
newParagraph.getCTP().setPPr(paragraph.getCTP().getPPr());
for (XWPFRun run : paragraph.getRuns()) {
XWPFRun newRun = newParagraph.createRun();
newRun.getCTR().setRPr(run.getCTR().getRPr());
newRun.setText(run.getText(0));
}
}
// 复制 input01.docx 文件的表格到'应变计'书签位置的段落
for (XWPFTable table : doc1.getTables()) {
XWPFTable newTable = doc2.createTable();
newTable.getCTTbl().setTblPr(table.getCTTbl().getTblPr());
for (XWPFTableRow row : table.getRows()) {
XWPFTableRow newRow = newTable.createRow();
newRow.getCtRow().setTrPr(row.getCtRow().getTrPr());
for (XWPFTableCell cell : row.getTableCells()) {
XWPFTableCell newCell = newRow.createCell();
newCell.getCTTc().setTcPr(cell.getCTTc().getTcPr());
for (XWPFParagraph paragraph : cell.getParagraphs()) {
XWPFParagraph newParagraph = newCell.addParagraph();
newParagraph.getCTP().setPPr(paragraph.getCTP().getPPr());
for (XWPFRun run : paragraph.getRuns()) {
XWPFRun newRun = newParagraph.createRun();
newRun.getCTR().setRPr(run.getCTR().getRPr());
newRun.setText(run.getText(0));
}
}
}
}
}
}
// 保存修改后的 input03.docx 文件
FileOutputStream fos = new FileOutputStream("input04.docx");
doc2.write(fos);
// 关闭所有打开的文件流
fis.close();
fis2.close();
fos.close();
System.out.println("内容复制完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用说明
- 确保你已经安装了 Apache POI 库。
- 将代码中的 "input01.docx" 替换为要复制内容的 Word 文档路径。
- 将代码中的 "input03.docx" 替换为要粘贴内容的 Word 文档路径。
- 将代码中的 "应变计" 替换为要粘贴内容的书签名称。
- 运行代码,将在 "input03.docx" 文件中将 "应变计" 书签位置的内容替换为 "input01.docx" 文件的内容。
注意
- 本示例代码仅复制文本内容,不包含图片、表格等其他元素。
- 你可以根据需要修改代码,以实现更复杂的功能。
- Apache POI 库的版本可能会影响代码的运行结果。
希望本指南能够帮助你使用 Java Apache POI 库完成 Word 文档书签内容复制的操作。
原文地址: https://www.cveoy.top/t/topic/fNHY 著作权归作者所有。请勿转载和采集!