Java 代码示例:将三个 Word 文件指定内容合并成一个新文件
以下是一个使用 Apache POI 库实现将三个 Word 文件指定内容结合成一个 Word 文件的 Java 代码示例:
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class MergeWordFiles {
public static void main(String[] args) {
try {
// 加载输入文件
FileInputStream input01 = new FileInputStream('input01.docx');
FileInputStream input02 = new FileInputStream('input02.docx');
FileInputStream input03 = new FileInputStream('input03.docx');
// 创建输出文件
FileOutputStream output = new FileOutputStream('input04.docx');
// 创建新的 Word 文档
XWPFDocument doc = new XWPFDocument();
// 复制 input01.docx 内容到 input03.docx 的'应变计'书签位置
XWPFDocument doc01 = new XWPFDocument(input01);
XWPFDocument doc03 = new XWPFDocument(input03);
copyBookmarkContent(doc01, doc03, '应变计');
// 复制 input02.docx 内容到 input03.docx 的'位移计'书签位置
XWPFDocument doc02 = new XWPFDocument(input02);
copyBookmarkContent(doc02, doc03, '位移计');
// 将合并后的内容写入输出文件
doc03.write(output);
output.close();
System.out.println('合并完成!');
} catch (IOException e) {
e.printStackTrace();
}
}
private static void copyBookmarkContent(XWPFDocument sourceDoc, XWPFDocument targetDoc, String bookmarkName) {
XWPFParagraph sourceParagraph = findParagraphByBookmark(sourceDoc, bookmarkName);
XWPFParagraph targetParagraph = findParagraphByBookmark(targetDoc, bookmarkName);
if (sourceParagraph != null && targetParagraph != null) {
for (XWPFRun run : sourceParagraph.getRuns()) {
XWPFRun newRun = targetParagraph.createRun();
newRun.setText(run.getText(0));
newRun.setBold(run.isBold());
newRun.setItalic(run.isItalic());
newRun.setFontFamily(run.getFontFamily());
newRun.setFontSize(run.getFontSize());
newRun.setColor(run.getColor());
}
}
}
private static XWPFParagraph findParagraphByBookmark(XWPFDocument doc, String bookmarkName) {
for (XWPFParagraph paragraph : doc.getParagraphs()) {
for (CTBookmark bookmark : paragraph.getCTP().getBookmarkStartList()) {
if (bookmark.getName().equals(bookmarkName)) {
return paragraph;
}
}
}
return null;
}
}
在代码中,我们首先加载输入文件 input01.docx、input02.docx 和 input03.docx,并创建输出文件 input04.docx。然后,我们创建一个新的 XWPFDocument 对象作为合并后的 Word 文档。
接下来,我们使用 copyBookmarkContent() 方法将 input01.docx 文件的内容复制到 input03.docx 文件的'应变计'书签位置,再将 input02.docx 文件的内容复制到 input03.docx 文件的'位移计'书签位置。
最后,我们将合并后的内容写入输出文件,并关闭输出流。
请确保已将 Apache POI 库的 5.2.2 版本添加到项目的依赖中。
原文地址: https://www.cveoy.top/t/topic/fNBU 著作权归作者所有。请勿转载和采集!