我想知道,我怎样才能多次重用一个模板(里面有一个页面和一些变量)一个XWPFDocument
对象。
我的想法是:
- 在
XWPFDocument
中加载一次模板作为模板对象 - 克隆/创建/复制模板对象及其所有样式和标题等
- 用内容填充克隆
- 将此克隆添加到目标 -
XWPFDocument
我只在一页中得到了这项工作。当我尝试克隆/创建/复制模板对象时,它将丢失他的所有样式信息。
如何使用 Java 将一段.docx复制到另一个.docx并保留样式
如何使用POI将一个.docx中的某些内容复制到另一个.docx,而不会丢失格式?
> POI 可能不支持开箱即用,但我在我的项目 poi-mail-merge 中做了类似的事情,它与底层 XML 一起工作,以重复替换模板Microsoft Word 文档中的标记,并将结果合并到一个结果文档中。
因此,它基本上将模板文档多次复制到生成的文档中。
请参阅此处了解我在那里是如何做到的,基本上我处理 XML 正文文本并在那里进行替换/更改,然后将其附加到结果文档中。
POI Mail Merge
在其他情况下可能会有所帮助,但在我的情况下它不起作用。
我的解决方法是先将我的模板XWPFDocument
更新为所需的结构,暂时保存它并将其读回XWPFDocument
对象。
步骤如下:
- 将模板文件读入
XWPFDocument
- 从数据文件中读取记录,例如.csv
- 计算与数据记录相关的页数
- 从模板中获取正文元素对象 -
XWPFDocument
- 在模板中创建新的正文元素(取决于页数
XWPFDocument
并用我们之前获得的相同对象替换它们 - 暂时保存更新的模板 -
XWPFDocument
- 将临时保存的模板读入
XWPFDocument
- 替换所有占位符并用您的 CSV 数据填充它们
希望这对某人有所帮助