DOCX4J - 替换段落

时间:2017-11-03 17:12:23

标签: java docx4j

我有一个模板,我需要更改一些值。我使用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;
                            }
                        }
                    }
                }
            }
        }
    }
}

修改 我编写了代码。它取代了,但没有我之前设定的所有格式和样式。

0 个答案:

没有答案