我正在尝试自动化docx报告生成过程。为此,我使用java和docx4j。我有一个只包含单个页面的模板文档。我想复制该页面修改它并将其保存在另一个docx文档中。输出报告是多个类似的页面,并且从模板中进行了修改。我该怎么做呢。
PS:java和docx4j是我的第一选择,但我对除java和docx4j之外的解决方案持开放态度。
答案 0 :(得分:1)
让您修改模板,以下是如何将一个文档添加到另一个文档的末尾。假设base.docx
包含“这是基础文档”。并且template.docx
包含“时间是:”,然后执行此代码后:
WordprocessingMLPackage doc = Docx4J.load(new File("base.docx"));
WordprocessingMLPackage template = Docx4J.load(new File("template.docx"));
MainDocumentPart main = doc.getMainDocumentPart();
Br pageBreak = Context.getWmlObjectFactory().createBr();
pageBreak.setType(STBrType.PAGE);
main.addObject(pageBreak);
for (Object obj : template.getMainDocumentPart().getContent()) {
main.addObject(obj);
}
main.addParagraphOfText(LocalDateTime.now().toString());
doc.save(new File("result.docx"));
然后result.docx
将包含以下内容:
This is the base document.
^L
The time is:
2018-04-16T17:37:13.541984200
(其中^ L表示分页符。)
答案 1 :(得分:0)
更准确地说,我的原始模板仅包含标题和一些样式组件。
此类信息可以存储在Word样式表(.dotx文件)中。
PS:java和docx4j是我的首选,但是除了Java和docx4j之外,我也欢迎其他解决方案。
pxDoc是一个很好的工具:您可以在文档生成器中指定专用的样式表,也可以使用“可变样式”并仅在启动文档生成时指定样式表。