我正在使用Apache POI使用java来处理docx文档。原理很简单:
我已经成功加载了模板文档,并且我还创建了最终的doc对象,其中不包含任何内容(来自包含我想要的样式的空文档,因此我不会松开它们)。我可以通过段落和表格来更改模板中的数据字段,但我不能做的是将已更改的内容复制到最终文档。
基本上,这就是我所拥有的:
for (int i=0; i<10; i++) {
finalDoc.removeBodyElement(i);
}
for (int i=0; i<10; i++) {
//EditableDocX is a subclass of XWPFDocument, for purpose of my project
EditableDocX document = new EditableDocX("template.docx");
replacementMap.put("[field1]", "Content1_"+i);
replacementMap.put("[field2]", "Content2_"+i);
document.replaceWithMap(replacementMap); //I've have this working
finalDoc.addContentOfDoc(document); //I don't have this working :(
}
finalDoc.saveFile("result.docx");
有没有办法将document
对象的内容复制到finalDoc
对象的末尾? (有段落和表格,有样式)
答案 0 :(得分:1)
我最终改变了库:docx4j对我想做的事情更有用。 仅供参考,这是在另一端附加文档所需的代码片段:
public static void append(WordprocessingMLPackage docDest, WordprocessingMLPackage docSource) {
List<Object> objects = docSource.getMainDocumentPart().getContent();
for(Object o : objects){
docDest.getMainDocumentPart().getContent().add(o);
}
}
这适用于我,它将docSource中的内容复制到docDest,保留格式。