POI库版本不兼容导致无法获取书签列表问题解决方法
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()方法获取书签的起始节点列表。这样就可以避免找不到符号的错误。
原文地址: https://www.cveoy.top/t/topic/fMaw 著作权归作者所有。请勿转载和采集!