Apache POI Word 添加字段

Apache POI Word add field

背景: 当使用 Microsoft Word 时,可以定义字段,然后用一些值替换这些字段。

例如添加以下内容然后激活字段功能将显示文档的标题(在属性中定义)。

问题:在使用 Apache POI 生成我的 Word 文档时,是否有任何方法可以添加此类字段,以便最终用户看到正确的值(我还将提供值田野)。我查看了文档 object 中定义的方法,但没有发现任何有用的信息。仅在文档中写入此字符串是行不通的(有点明显...)

编辑: 某些字段的 XML 如下所示(在本例中为文档的作者)

<w:p w:rsidRDefault="00AB5E40" w:rsidR="009B15AD">
  <w:fldSimple w:instr=" AUTHOR \* MERGEFORMAT ">
    <w:r>
      <w:rPr>
        <w:noProof/>
      </w:rPr>
      <w:t>My Name</w:t>
    </w:r>
  </w:fldSimple>
</w:p>

如果有人遇到类似问题,请回答我自己的问题。正如 Gagravarr 所指出的,对此没有高级 API 但是通过查看 XML 结构我想出了这个:

private static void addField(XWPFParagraph paragraph, String fieldName) {
    CTSimpleField ctSimpleField = paragraph.getCTP().addNewFldSimple();
    ctSimpleField.setInstr(fieldName + " \* MERGEFORMAT ");
    ctSimpleField.addNewR().addNewT().setStringValue("<<fieldName>>");
}

使用您手边的某个段落和字段名称调用此方法将在您的文档中呈现此字段(使用正确的值或使用 << fieldName >>)