背景:使用 Microsoft Word 时,可以定义字段,然后将其替换为某些值。
例如添加以下内容,然后激活字段功能将显示文档的标题(在属性中定义)。
问题:在使用 Apache POI 生成 Word 文档时,有什么方法可以添加此类字段,以便最终用户看到正确的值(我还将提供这些字段的值)。我查看了 Document 对象上定义的方法,但没有看到任何有用的东西。仅在文档中写入此字符串是行不通的(很明显......)
编辑:某些字段的 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 >>)
关于java - Apache POI Word 添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919328/