生成MS Word报告并使用java导出

时间:2012-08-10 12:13:31

标签: apache-poi java

我需要使用纯java导出表并从我的应用程序生成报告。不允许使用COM或任何需要预安装应用程序的东西。我绝对需要.doc格式。 docx格式是可选的。

export 表意味着只需在word文档中创建包含数据的简单表。生成报告是用模板表中的某些值替换占位符。它还涉及在模板表中插入新的子表或合并单元格和行。

所以,任务是:

  • 在MS Word文档中创建表
  • 将子表插入表格单元格
  • 合并表格单元格和行
  • 替换文档中的文本,保留格式

    我试图搜索网络,但我设法找到 Apache POI Aspose 库来完成这项工作。 Aspose似乎还可以,但不幸的是我买不起。 POI的文档很差,我无法弄清楚它是否适合。

    此外,我尝试将简单表插入到文档中。但它只会破坏文件。看看下面的代码:

        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("poi.doc"));
        HWPFDocument doc = new HWPFDocument(fs);        
        Range range = doc.getRange();
    
        Table table = range.insertTableBefore((short)5, 5);
        table.getRow(0).getCell(0).replaceText("cell", true);       
        doc.write(new FileOutputStream("poi_out.doc"));
    

    那时我有三个问题:

  • 我在这个例子中做错了吗?
  • POI是否适用于我提到的任务?
  • 您可以建议的其他免费

    感谢您的回复

    P.S。我已在此网站上阅读了有关该主题的一些帖子。他们都没有真正帮助我。而且他们都很老了。从那时起,一些新功能可能已经改变。

  • 3 个答案:

    答案 0 :(得分:3)

    有两种方法可以做到这一点:

    1. 我真的建议这样做,因为这样可以轻松解决使用实际值替换模板占位符的问题:
    2. 使用您需要的内容创建HTML文件。使用velocity作为模板引擎。现在,在使用代码中的值替换占位符后,使用扩展名“.doc”或“.docx”保存文件。生成的文件将很好地打开。它将在Web布局中打开,用户可以根据需要切换到打印布局。

      http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html

      1. 看看docx4j。
      2. http://www.docx4java.org/trac/docx4j

        但为此您将了解MS Office Word docs XML结构的工作原理。将表放在另一个表中可能会非常复杂。

    答案 1 :(得分:0)

    您可能希望查看免费的JODReports,可以执行doc / docx。它可能比POI更快,但确实需要在某处安装OpenOffice / LibreOffice。 Docmosis是另一个可以执行此操作的工具,如果您能够调用云服务(这非常便宜但不是免费的),您可以在不安装任何内容的情况下使用它。我不知道您的问题与POI代码示例有什么关系,但是POI可以生成doc文档(我不确定docx)并且它是免费的。

    答案 2 :(得分:0)

    您还可以查看: