可以直接获取文档中所有table
List<XWPFTable> xwpfTables = doc.getTables(); for (XWPFTable xwpfTable : xwpfTables){ List<XWPFTableRow> rows = ((XWPFTable) bodyElement).getRows(); for (XWPFTableRow xwpfTableRow:rows){ System.out.println("-----------------------------------------------"); List<XWPFParagraph> paragraphs = xwpfTableRow.getCell(0).getParagraphs(); for (XWPFParagraph xwpfParagraph : paragraphs){ Map<String, Object> paragraphsInfo = contentUnitService.getParagraphsInfo(doc, xwpfParagraph); System.out.println(paragraphsInfo); } } }
但是,这样无法知道在文档中的位置,所以代码如下
Iterator<IBodyElement> bodyElementsIterator = doc.getBodyElementsIterator(); while (bodyElementsIterator.hasNext()) { IBodyElement bodyElement = bodyElementsIterator.next(); // 根据元素类型执行相应操作 if (bodyElement instanceof XWPFParagraph) { } else if (bodyElement instanceof XWPFTable) { List<XWPFTableRow> rows = ((XWPFTable) bodyElement).getRows(); for (XWPFTableRow xwpfTableRow:rows){ System.out.println("-----------------------------------------------"); List<XWPFParagraph> paragraphs = xwpfTableRow.getCell(0).getParagraphs(); for (XWPFParagraph xwpfParagraph : paragraphs){ Map<String, Object> paragraphsInfo = contentUnitService.getParagraphsInfo(doc, xwpfParagraph); System.out.println(paragraphsInfo); } } } }