java - 从 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
解决方案
您无法获得第一列的值的原因是他的 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>