POI库版本不兼容导致无法获取书签列表问题解决方法

在使用POI库操作Word文档时,可能会遇到以下错误:

java: 找不到符号
  符号:   方法 getBookmarkStartList()
  位置: 接口 org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR

这个问题是因为使用的POI库版本不兼容导致的。在新版本的POI库中,getBookmarkStartList()方法已经被废弃,并且没有替代的方法。

解决办法

使用getCTP()方法获取CTP对象,然后使用getBookmarkStartList()方法获取书签的起始节点列表。修改代码如下:

// 获取书签的内容
public static String getBookmarkContent(XWPFDocument doc, String bookmarkName) {
    for (XWPFParagraph paragraph : doc.getParagraphs()) {
        for (XWPFRun run : paragraph.getRuns()) {
            CTR ctr = run.getCTR();
            if (ctr != null) {
                for (CTBookmark bookmark : ctr.getCTP().getBookmarkStartList()) {
                    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()) {
            CTR ctr = run.getCTR();
            if (ctr != null) {
                for (CTBookmark bookmark : ctr.getCTP().getBookmarkStartList()) {
                    if (bookmark.getName().equals(bookmarkName)) {
                        run.setText(content, 0);
                    }
                }
            }
        }
    }
}

请注意,修改后的代码中使用了getCTP()方法获取CTP对象,然后再使用getBookmarkStartList()方法获取书签的起始节点列表。这样就可以避免找不到符号的错误。

POI库版本不兼容导致无法获取书签列表问题解决方法

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

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