package word;import orgapachepoixwpfusermodelXWPFDocument;import orgapachepoixwpfusermodelXWPFParagraph;import orgapachepoixwpfusermodelXWPFRun;import orgopenxmlformatsschemaswordprocessingmlx2006main
这个错误是因为Apache POI的版本问题导致的。在较新的版本中,setBookmarkStartList和setBookmarkEndList方法已经被废弃。
你可以尝试使用addNewBookmarkStart()和addNewBookmarkEnd()方法来替代。修改copyBookmarks方法的代码如下:
private static void copyBookmarks(XWPFDocument inputDoc, XWPFDocument outputDoc, String bookmarkName) {
// 获取输入文件中的所有段落
for (XWPFParagraph paragraph : inputDoc.getParagraphs()) {
// 获取段落中的所有书签
for (CTBookmark bookmark : paragraph.getCTP().getBookmarkStartList()) {
// 判断书签名称是否匹配
if (bookmark.getName().equals(bookmarkName)) {
// 获取书签的开始和结束位置
int bookmarkStart = paragraph.getCTP().getBookmarkStartList().indexOf(bookmark);
int bookmarkEnd = paragraph.getCTP().getBookmarkEndList().indexOf(bookmark);
// 创建新段落
XWPFParagraph newParagraph = outputDoc.createParagraph();
// 复制段落样式
newParagraph.getCTP().setPPr(paragraph.getCTP().getPPr());
// 复制段落中的所有文本
for (XWPFRun run : paragraph.getRuns()) {
XWPFRun newRun = newParagraph.createRun();
newRun.setText(run.getText(0));
}
// 复制段落中的所有书签
newParagraph.getCTP().addNewBookmarkStart().setName(bookmark.getName());
newParagraph.getCTP().addNewBookmarkEnd().setId(bookmark.getId());
}
}
}
}
这样修改后,应该就能够成功编译和运行了。
原文地址: http://www.cveoy.top/t/topic/h15J 著作权归作者所有。请勿转载和采集!