有没有办法(在java中)从人类可读的模板生成人类可编辑的Microsoft Word文档?

时间:2015-05-19 13:26:33

标签: java templates report reporting

我正在寻找一种方法让我的Java应用程序使用某种模板生成Word文档(文档的数据将由应用程序提供) 以下是要求:   - 模板应该可以为非开发人员编辑。使用适当的工具创建Jasper模板或使用某种模板语言编辑Word文档是合规的。要求编辑文档的xml文件不是   - 使用Microsoft Word可以轻松地为人类编辑结果。例如,Jasper或Birt生成的文档不符合要求,因为表格布局阻止了任何简单版本。

目前,我查看了以下解决方案,找不到符合这两个要求的人:

  • 碧玉。生成的文档不易编辑
  • 伯特。同样的问题
  • 使用模板马达(velocity,Freemarker)生成xml。我不能要求最终客户编辑这种XML文件......

4 个答案:

答案 0 :(得分:2)

你可以查看Templater。它非常好demo page

Disclamer:我是作者。

答案 1 :(得分:1)

的LibreOffice

LibreOffice是类似于Microsoft Office的应用程序套件的开源实现。除了支持标准化的OpenDocument格式外,它还可以读取和写入Microsoft Office格式。

LibreOffice提供Java API。因此,您可以通过编程方式从模板创建文档。

过去我们做过类似的事情,用搜索和替换以及文档变量修改文档。

Apache Poi

Apache Poi是一个用于读取和编写Microsoft Office兼容文档的开源库。

我不知道它的细节,但你可以看看。

答案 2 :(得分:1)

JODReports(开源)和Docmosis(商业)旨在使用普通/人为管理的文档作为模板(Word,OpenOffice等),合并您的数据并返回可编辑的文档, PDF等。请注意我为Docmosis工作。

JODReports和Docmosis都提供了Java API。

如果您对直接自动化Open Office或Libre Office感兴趣(如Basil的答案中所述),this blog about converting Doc to Pdf将为您提供快速入门:

  1. 将doc文件作为模板加载
  2. 搜索并替换
  3. 导出到文件(示例中为pdf)
  4. 要将输出格式更改为Doc而不是PDF:

     propertyValues[1].Value = "writer_pdf_Export";
    

     propertyValues[1].Value = "MS Word 97";
    

    我希望有所帮助。

答案 3 :(得分:0)

也在搜索此类解决方案,我找到XDocReport,包括example of a table。我试试看。