Apache POI Word添加字段

时间:2015-08-10 12:16:25

标签: java apache-poi

后台:使用Microsoft Word时,可以定义随后被某些值替换的字段。

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

Word field

问题:在使用Apache POI生成Word文档时是否有任何方法可以添加此类字段,以便最终用户看到正确的值(我还将提供字段的值)。我查看了Document对象上定义的方法,但没有看到任何有用的东西。只是在文档中写这个字符串是行不通的(有点明显......)

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

<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>

1 个答案:

答案 0 :(得分:2)

如果有人遇到类似的问题,请回答我自己的问题。正如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>>");
}

使用您手边的某个段落调用此方法,字段名称将在文档中呈现此字段(使用正确的值或使用&lt;&lt;&lt; fieldName&gt;&gt;)