1

我想知道,我怎样才能多次重用一个模板(里面有一页和一些变量)一个XWPFDocument对象。

我的想法是:

  • XWPFDocument将模板作为模板对象加载一次
  • 克隆/创建/复制模板对象及其所有样式和标题等
  • 用内容填充克隆
  • 将此克隆添加到目的地-XWPFDocument

我只为一页得到了这项工作。当我尝试克隆/创建/复制模板对象时,它将丢失他所有的样式信息。

如何使用Java将一段.docx复制到另一个.docx并保留样式

如何使用 POI 将一个 .docx 中的某些内容复制到另一个 .docx 而不丢失格式?

4

2 回答 2

2

POI 可能不支持开箱即用,但我在我的项目poi-mail-merge中做了类似的事情,它与底层 XML 一起使用,以重复替换模板 Microsoft Word 文档中的标记并将结果组合成一个结果文档。

所以它基本上将模板文档多次复制到结果文档中。

请参阅此处了解我在那里的操作方式,基本上我处理 XML 正文文本并在那里进行替换/更改,然后将其附加到结果文档中。

于 2016-02-12T12:04:28.680 回答
0

POI Mail Merge在其他情况下可能会有所帮助,但在我的情况下它不起作用。

我的解决方法是XWPFDocument先将我的 Template- 更新为所需的结构,暂时保存并将其读回XWPFDocument-object。

这里的步骤:

  • 将模板文件读入XWPFDocument
  • 从数据文件中读取记录,例如 csv
  • 计算与数据记录相关的页数
  • 从模板中获取 Bodyelements-Objects-XWPFDocument
  • 在模板中创建新的 Bodyelements(取决于页数)XWPFDocument并用我们之前获得的相同对象替换它们
  • XWPFDocument暂时保存更新的模板
  • 将临时保存的模板读入XWPFDocument
  • 替换所有占位符并用您的 CSV 数据填充它们

希望这可以帮助某人

于 2016-02-15T10:41:11.030 回答