Ran*_*tne 5 java ms-word apache-poi xwpf
我们使用 Apache POI 来操作 Microsoft Word 文档。
到目前为止,我们可以使用以下 API 访问文档中所有必需的段落(包括页眉、页脚、表格)XWPFDocument
val allBodyElements = bodyElements
.plus(headerList.flatMap { it.bodyElements })
.plus(footerList.flatMap { it.bodyElements })
val allParagraphs = allBodyElements.flatMap {
when (it) {
is XWPFParagraph -> listOf(it)
is XWPFTable -> it.rows
.flatMap { row -> row.tableCells }
.flatMap { cell -> cell.paragraphs }
else -> emptyList()
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这遗漏了文本框中包含的段落。查看底层word/document.xml这些 TextBox 的嵌入方式如下:
<w:body>
<w:p>
<w:r>
<mc:AlternateContent>
<mc:Choice>
<w:drawing>
<wp:anchor>
<a:graphic>
<a:graphicData>
<wps:wsp>
<wps:txbx>
<w:txbxContent>
<!-- DESIRED PARAGRAPH -->
</w:txbxContent>
...
</mc:Choice>
<mc:Fallback>
<w:pict>
<v:shape>
<v:textbox>
<w:txbxContent>
<!-- DESIRED PARAGRAPH -->
</w:txbxContent>
Run Code Online (Sandbox Code Playgroud)
有没有办法访问这些段落并XWPFParagraph使用 apache poi 将它们作为对象接收,这样我们就可以使用 Java 代码来操作它们?
我们目前使用的是 apache poi 版本4.1.2
编辑:感谢这里提供的解决方案: https: //stackoverflow.com/a/25877256/611032我能够提取段落并读取数据,但我不知道如何保存手动创建、操作的数据XWPFParagraph回到所附段落。
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |