我一直试图填充一个word模板(.docx)文件,其中有需要替换的占位符。
我能够重写模板,但是文本没有换行符,我知道回车或新行(\r\n)在.docx文件中不起作用。我使用VariableReplace方法进行转换,但是在使用变量replace时无法放置br或factory.createbr()。
任何建议都会很有帮助。下面是我尝试的一段代码
Map<String,String> variableReplaceMap = new HashMap<>();
Map<String, String> textContent = readTextContentAfterDBExtractionToFillUpTemplate();
ObjectFactory factory = Context.getWmlObjectFactory();
P para = factory.createP();
R rspc = factory.createR();
String power= textContent.get("Power & Energy");
String[] powerWithNewLine = skills.split("\\\\n");
for (String eachLineOfPower : powerWithNewLine) {
Text eachLineOfPowerTxt = factory.createText();
eachLineOfPowerTxt .setValue( eachLineOfPower );
rspc.getContent().add( eachLineOfPowerTxt );
Br br = factory.createBr();
rspc.getContent().add(br);
para.getParagraphContent().add(rspc);
documentPart.addObject(para);
}
String str = "";
for (Object eachLineOfPgrph : para.getParagraphContent()) {
str = str + eachLineOfPgrph;
}
variableReplaceMap.put("POWER", str);
return variableReplaceMap;
杰森的链接死了。以下是当前链接:https://github.com/plutext/docx4j/blob/master/docx4j-samples-docx4j/src/main/java/org/docx4j/sample/variableReplace.java
如果将来发生更改,只需使用以下函数并将其应用于包含换行符的字符串:
/**
* Hack to convert a new line character into w:br.
* If you need this sort of thing, consider using
* OpenDoPE content control data binding instead.
*
* @param r
* @return
*/
private static String newlineToBreakHack(String r) {
StringTokenizer st = new StringTokenizer(r, "\n\r\f"); // tokenize on the newline character, the carriage-return character, and the form-feed character
StringBuilder sb = new StringBuilder();
boolean firsttoken = true;
while (st.hasMoreTokens()) {
String line = (String) st.nextToken();
if (firsttoken) {
firsttoken = false;
} else {
sb.append("</w:t><w:br/><w:t>");
}
sb.append(line);
}
return sb.toString();
}
在新的DOCX中,我的XML如下所示: 所以我不知道如何将第二行设置到第一行的相同位置?
这就是我现在的代码,我试着放入“\n”、“ ”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行: 我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件:
我正在使用apache poi 3.8将值写入word模板。我将word文件中的特定字符串(键)替换为所需的值,例如,word文档中有一个包含键%entry1%的段落,我想将其替换为“entry text line1\n new line”。在我的实现中,所有被替换的键和值都存储在一个地图中。 HWPFDocument的代码为: 这段代码工作得很好,我只需要在输入字符串中添加\n作为换行符。但是,
如何在React Native中的文本组件中插入换行符? 我在这里检查了我的问题。 但我的情况有点不同。 所以它不能以这种方式工作。 这是我的容器代码,它为ContactInfo提供了道具。 这是子组件。它接收道具作为接触 finllay,它给出了结果“名称”。 我希望 但它给了大卫·约翰·韦德。 我无法将和'放入子组件中,因为那只有一行。 我如何解决这个问题?
Word显示图像有问题。我真的不知道问题出在哪里