2

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

导出表格就是在word文档中用数据创建简单的表格。生成报告就是用模板表中的一些值替换占位符。它还涉及在模板表中插入新的子表或合并单元格和行。

所以,任务是:

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

    我试图搜索网络,但我设法找到了Apache POIAspose库来完成这项工作。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 是否适用于我提到的任务?
  • 您可以推荐哪些其他免费库

    感谢您的回复

    PS我已经阅读了本网站上有关该主题的一些帖子。他们都没有真正帮助过我。而且他们都老了。从那时起,一些新功能可能发生了变化。

  • 4

    3 回答 3

    3

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

    1. 我真的建议这样做,因为这可以轻松解决您用实际值替换模板占位符的问题:

    用你需要的东西创建一个 HTML 文件。使用速度作为您的模板引擎。现在,将占位符替换为代码中的值后,使用扩展名“.doc”或“.docx”保存文件。结果文件将很好地用word打开。它将在 Web 布局中打开,用户可以根据需要切换到打印布局。

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

    1. 看看 docx4j。

    http://www.docx4java.org/trac/docx4j

    但为此,您将了解 MS Office Word 文档 XML 结构的工作原理。把一张桌子放在另一张桌子里面可能真的很复杂。

    于 2012-08-10T12:29:01.983 回答
    0

    你可能想看看免费的JODReports,可以做 doc/docx。它可能比 POI 更快,但确实需要在某处安装 OpenOffice/LibreOffice。 Docmosis是另一个可以做到这一点的工具,如果你能够调用云服务(这很便宜但不是免费的),你可以在不安装任何东西的情况下使用它。我不知道你的 POI 代码示例有什么问题,但是 POI 可以生成 doc 文档(我不确定 docx)而且它是免费的。

    于 2012-08-16T08:02:48.497 回答
    0

    你也可以看看:

    于 2015-01-30T03:00:08.983 回答