从Word中的自动递增单元格中获取值

Get value from auto-increment cell in Word

我在 Word

中有简单的 table

第一列自增。 我怎样才能从那里获得价值?

XWPFDocument xdoc = new XWPFDocument(resource.getInputStream());
List<XWPFTable> tables = xdoc.getTables();
for (XWPFTable table : tables) {
  int i = 1;
  for (XWPFTableRow row : table.getRows()) {
    StringBuilder sb = new StringBuilder();
    for (XWPFTableCell cell : row.getTableCells()) {
      cell.getParagraphs()
          .forEach(xwpfParagraph -> sb.append(xwpfParagraph.getText())
              .append(" "));
    }
    log.info("ROW {}   : {}", String.format("%03d", i++), sb);
  }
}

当前代码可以运行,但我无法获取计数器值

我的日志

13:04:04.035 [main] INFO  com.test.WordService - Word: Test.docx
13:04:04.293 [main] INFO  com.test.WordService - ROW 001   :  Jack London 
13:04:04.293 [main] INFO  com.test.WordService - ROW 002   :  James Hadley Chase 
13:04:04.293 [main] INFO  com.test.WordService - ROW 003   :  Agatha Mary Clarissa 

您无法获取第一列值的原因是他的 XWPFParagraph 不像其他列那样包含纯文本。这就是为什么当您调用 getText 时,它找不到任何东西。这就是您的第一行真正包含的内容。

第 1 列:

<xml-fragment>
    <w:pPr>
        <w:pStyle w:val="Paragraphedeliste"/>
        <w:numPr>
            <w:ilvl w:val="0"/>
            <w:numId w:val="1"/>
        </w:numPr>
    </w:pPr>
</xml-fragment>

第 2 列:

<xml-fragment>
    <w:r>
        <w:t>Jack London</w:t>
    </w:r>
</xml-fragment>