我有一个模板,我需要更改一些值。我使用VariablePrepare.prepare()
和mainDocumentPartObject.variableReplace(hashMap)
来执行此操作。
但是现在我必须动态创建整个段落并添加到某个位置。
我动态创建了P
。如何将其置于某个位置或替换现有段落?我有一个方法已经从文档中读取所有段落,我可以找到我需要替换的地方,如果是这样的话:
private static void addParagraph(List<Object> paragraphs, P paragraphToAdd) {
for (Object paragraph : paragraphs) {
if (paragraph instanceof P) {
for (Object run : ((P) paragraph).getContent()) {
if (run instanceof R) {
for (Object item : ((R) run).getContent()) {
JAXBElement<?> element = ((JAXBElement<?>) item);
if (element.getDeclaredType().getName().equals("org.docx4j.wml.Text")) {
if (((Text)element.getValue()).getValue().equals("MY_VARIABLE")) {
//EDIT
((P) paragraph).getContent().removeAll(((P) paragraph).getContent());
((P) paragraph).getContent().addAll(paragraphToAdd.getContent());
return;
}
}
}
}
}
}
}
}
修改 我编写了代码。它取代了,但没有我之前设定的所有格式和样式。