在word文档中搜索占位符

时间:2016-04-13 08:10:30

标签: java apache-poi

我想搜索特定的占位符,并使用带有Java的Apache POI将其替换为word模板中的文本,我想要一些简单的东西,不要在所有表,行,单元格和运行中循环以搜索其中的每个文本。 / p>

1 个答案:

答案 0 :(得分:2)

看看我的项目https://github.com/centic9/poi-mail-merge,它已经做了类似的事情。

它基本上检索word文档的XML表示,进行替换并将结果放回到文档中。

即。

之类的东西
    CTBody body = doc.getDocument().getBody();

    XmlOptions optionsOuter = new XmlOptions();
    optionsOuter.setSaveOuter();

    // read the current full Body text
    String srcString = body.xmlText();

    ... do the replacements in srcString

    XmlOptions optionsOuter = new XmlOptions();
    optionsOuter.setSaveOuter();
    String srcString = src.xmlText();
    String prefix = srcString.substring(0,srcString.indexOf(">")+1);

    final String mainPart;
    // exclude template itself in first appending
    if(first) {
        mainPart = "";
    } else {
        mainPart = srcString.substring(srcString.indexOf(">")+1,srcString.lastIndexOf("<"));
    }

    String sufix = srcString.substring( srcString.lastIndexOf("<") );
    String addPart = append.substring(append.indexOf(">") + 1, append.lastIndexOf("<"));
    CTBody makeBody = CTBody.Factory.parse(prefix+mainPart+addPart+sufix);
    src.set(makeBody);

请注意,如果替换分为多个格式,例如,如果替换标签的一部分是粗体,则这是其工作方式所固有的。