我想搜索特定的占位符,并使用带有Java的Apache POI将其替换为word模板中的文本,我想要一些简单的东西,不要在所有表,行,单元格和运行中循环以搜索其中的每个文本。 / p>
答案 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);
请注意,如果替换分为多个格式,例如,如果替换标签的一部分是粗体,则这是其工作方式所固有的。