我正在使用 Apache POI 来编辑 Word 文档。我的主要任务是从段落和表格中获取文本和占位符,它们工作正常。在我的一份客户文档中,有一个占位符,该占位符内有需要获取和替换的文本。问题是占位符内的文本无法作为段落获取,因此我无法获取和替换文本。占位符的屏幕截图附在问题中,我使用的代码如下。
XWPFDocument wordDocx = new XWPFDocument(Files.newInputStream(Paths.get(template.getAbsolutePath())));
List<IBodyElement> elements = wordDocx.getBodyElements();
Iterator<IBodyElement> bodyIterator = elements.iterator();
bodyIterator.forEachRemaining((elem) -> {
if(PARAGRAPH.equalsIgnoreCase(elem.getElementType().name())) { //if element is a paragraph.
// extract the paragraph text and replace the placeholders.
}
else if (TABLE.equalsIgnoreCase(elem.getElementType().name())) { //if element is a table.
// iterate cell by cell and replace the image placeholders.
}
});
占位符不是以段落或表格的形式出现。任何有关如何从占位符获取文本的指导将不胜感激。占位符截图如下:
我正在迭代问题中上述代码中可以看到的文档元素。但是屏幕截图中可以看到的占位符内的文本无法作为段落获取。
我无法为您的问题提供准确的解决方案,但一些提示可能会帮助您(我有一个非常相似的问题)。
问题是您在屏幕截图中显示的元素类型。如果你说它既不是段落也不是表格,那么它可能是一个嵌入文件?在文档中有一个获取这些的方法:
另外,请查看我在解决一个非常相似的问题时发现的这个存储库(也许您也发现一些对您的案例有帮助的东西):