获取word文档中书签在第几个表格的第几列(这里我所遇到场景仅仅把书签放在表头,所以只需要知道第几个表格第几列)
public static Map<Integer, Integer> tableIfHasBookName(XWPFDocument xwpfDocument, String bookName){
Map<Integer, Integer> map = new HashMap<>();
List<XWPFTable> tableList = xwpfDocument.getTables();
if (tableList.size()<1){
map.put(-1,-1);
return map;
}else {
for (int tabIndex=0;tabIndex<tableList.size();tabIndex++){
XWPFTable xwpfTable = tableList.get(tabIndex);
List<XWPFTableRow> rows = xwpfTable.getRows();
XWPFTableRow xwpfTableRow = rows.get(0);
List<XWPFTableCell> tableCells = xwpfTableRow.getTableCells();
for (int cellIndex = 0;cellIndex<tableCells.size();cellIndex++){
XWPFTableCell xwpfTableCell = tableCells.get(cellIndex);
List<XWPFParagraph> paragraphs = xwpfTableCell.getParagraphs();
for (XWPFParagraph x: paragraphs){
CTP ctp = x.getCTP();
for (int dwi = 0;dwi<ctp.sizeOfBookmarkStartArray();dwi++){
CTBookmark bookmark = ctp.getBookmarkStartArray(dwi);
if (StringUtils.equals(bookmark.getName(),bookName)){
map.put(tabIndex,cellIndex);
return map;
}
}
}
}
}
}
map.put(-1,-1);
return map;
}