将input01docx文件里的所有内容复制到input03docx文件里的应变计书签位置Apache POI库为522版本完整代码
以下是使用Apache POI库将input01.docx文件内容复制到input03.docx文件的“应变计”书签位置的完整代码示例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class CopyContentToBookmark {
public static void main(String[] args) {
try {
// 打开input01.docx文件
FileInputStream fis = new FileInputStream("input01.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));
}
}
}
// 保存修改后的input03.docx文件
FileOutputStream fos = new FileOutputStream("input03.docx");
doc2.write(fos);
// 关闭所有打开的文件流
fis.close();
fis2.close();
fos.close();
System.out.println("内容复制完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
请注意,此代码假设input01.docx和input03.docx文件位于当前工作目录中。您需要根据实际情况修改文件路径。
原文地址: https://www.cveoy.top/t/topic/h7va 著作权归作者所有。请勿转载和采集!