首页 > 解决方案 > 从 Word 中的自动增量单元格获取值

问题描述

我在 Word 中有简单的表格

在此处输入图像描述

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

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 

标签: javaapache-poiword

解决方案


您无法获得第一列的值的原因是他的 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>

推荐阅读