Doc4j pptx 查找并替换 table 行

Doc4j pptx find and replace table row

我有一个要求,我需要在运行时替换 Powerpoint 文件中的一些文本(Powerpoint 文件被用作带有一些 placeholders/tokes 例如 {{data1}} 的模板)在 table。

我参考了论坛上的其他链接并从 'docx4j' 开始,但我无法超越一点,而且文档也不是很清楚

    List tableCells = clonedRow.getTc();
    // Finally, insert the copy in the list
    theTable.getTr().add(clonedRow); // standard Java list API
     for (int ix = 0; ix < tableCells.size(); ix++)
     {
         CTTableCell  tableCell = (CTTableCell)XmlUtils.unwrap(tableCells.get(ix));
        // List<CTTextParagraph> value=tableCell.getTxBody().getP();

         for (CTTextParagraph p : tableCell.getTxBody().getP()) {
             Text text = (Text) ((JAXBElement) p).getValue();
            }

SlidePart 扩展了 JaxbXmlPart,它包含:

public void variableReplace(java.util.Map<String, String> mappings)

如果你想使用变量替换,你的变量应该是这样的:${key1}, ${key2}

有关示例,请参阅 https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/VariableReplace.java 那是针对 docx 的;你只需要将它应用到你的 SlidePart。