package word;

import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmarkRange; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange;

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

public class Word { public static void main(String[] args) { try { // 打开输入文件input01.docx和input03.docx FileInputStream input01 = new FileInputStream('input01.docx'); FileInputStream input03 = new FileInputStream('input03.docx'); XWPFDocument doc01 = new XWPFDocument(input01); XWPFDocument doc03 = new XWPFDocument(input03);

        // 获取input01.docx中应变计书签的内容
        String bookmarkContent = getBookmarkContent(doc01, '应变计');

        // 替换input03.docx中应变计书签的内容
        replaceBookmarkContent(doc03, '应变计', bookmarkContent);

        // 保存新文件input04.docx
        FileOutputStream output = new FileOutputStream('input04.docx');
        doc03.write(output);
        output.close();

        // 关闭文档
        doc01.close();
        doc03.close();

        System.out.println('替换成功!');
    } catch (Exception e) {
        e.printStackTrace();
    }
}

// 获取书签的内容
public static String getBookmarkContent(XWPFDocument doc, String bookmarkName) {
    for (XWPFParagraph paragraph : doc.getParagraphs()) {
        for (XWPFRun run : paragraph.getRuns()) {
            for (CTBookmarkRange bookmarkRange : run.getCTR().getBookmarkStartList()) {
                CTBookmark bookmark = bookmarkRange.getBookmarkStart();
                if (bookmark.getName().equals(bookmarkName)) {
                    return run.getText(0);
                }
            }
        }
    }
    return null;
}

// 替换书签的内容
public static void replaceBookmarkContent(XWPFDocument doc, String bookmarkName, String content) {
    for (XWPFParagraph paragraph : doc.getParagraphs()) {
        for (XWPFRun run : paragraph.getRuns()) {
            for (CTBookmarkRange bookmarkRange : run.getCTR().getBookmarkStartList()) {
                CTBookmark bookmark = bookmarkRange.getBookmarkStart();
                if (bookmark.getName().equals(bookmarkName)) {
                    run.setText(content, 0);
                }
            }
        }
    }
}

}


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

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