以下是使用Apache POI库进行操作的示例代码:

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordDocumentCopy {
    public static void main(String[] args) {
        try {
            // 打开输入文件1
            XWPFDocument inputDoc1 = new XWPFDocument(new FileInputStream("input01.docx"));
            // 打开输入文件2
            XWPFDocument inputDoc2 = new XWPFDocument(new FileInputStream("input02.docx"));
            // 打开输出文件
            XWPFDocument outputDoc = new XWPFDocument();

            // 复制内容到输出文件
            copyContent(inputDoc1, outputDoc, "应变计");
            copyContent(inputDoc2, outputDoc, "位移计");

            // 保存输出文件
            FileOutputStream out = new FileOutputStream("input04.docx");
            outputDoc.write(out);
            out.close();

            System.out.println("文件复制完成。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void copyContent(XWPFDocument inputDoc, XWPFDocument outputDoc, String bookmarkName) {
        // 查找书签
        XWPFParagraph bookmarkParagraph = findBookmarkParagraph(inputDoc, bookmarkName);
        if (bookmarkParagraph != null) {
            // 复制段落
            XWPFParagraph newParagraph = outputDoc.createParagraph();
            newParagraph.getCTP().setPPr(bookmarkParagraph.getCTP().getPPr());
            newParagraph.getCTP().setRArray(bookmarkParagraph.getCTP().getRArray());
            newParagraph.getCTP().setBookmarkStartArray(bookmarkParagraph.getCTP().getBookmarkStartArray());
            newParagraph.getCTP().setBookmarkEndArray(bookmarkParagraph.getCTP().getBookmarkEndArray());
            newParagraph.getCTP().setSdtArray(bookmarkParagraph.getCTP().getSdtArray());
            newParagraph.getCTP().setFldSimpleArray(bookmarkParagraph.getCTP().getFldSimpleArray());
            newParagraph.getCTP().setHyperlinkArray(bookmarkParagraph.getCTP().getHyperlinkArray());

            // 复制段落中的文本
            for (XWPFRun bookmarkRun : bookmarkParagraph.getRuns()) {
                XWPFRun newRun = newParagraph.createRun();
                newRun.getCTR().setRPr(bookmarkRun.getCTR().getRPr());
                newRun.setText(bookmarkRun.getText(0));
            }
        }
    }

    private static XWPFParagraph findBookmarkParagraph(XWPFDocument document, String bookmarkName) {
        for (XWPFParagraph paragraph : document.getParagraphs()) {
            for (CTBookmark bookmark : paragraph.getCTP().getBookmarkStartList()) {
                if (bookmark.getName().equals(bookmarkName)) {
                    return paragraph;
                }
            }
        }
        return null;
    }
}

请确保将Apache POI库的jar文件添加到项目的依赖中。在此示例中,我们使用的是Apache POI库的5.2.2版本。

将input01docx文件里的所有内容复制到input03docx文件里的应变计书签位置并将input02docx文件里的所有内容复制到input03docx文件里的位移计书签位置将新的的文件以input04docx进行保存Apache POI库为522版本

原文地址: https://www.cveoy.top/t/topic/h7tN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录