我需要使用纯java导出表并从我的应用程序生成报告。不允许使用COM或任何需要预安装应用程序的东西。我绝对需要.doc
格式。 docx
格式是可选的。
到 export 表意味着只需在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"));
那时我有三个问题:
感谢您的回复
P.S。我已在此网站上阅读了有关该主题的一些帖子。他们都没有真正帮助我。而且他们都很老了。从那时起,一些新功能可能已经改变。
答案 0 :(得分:3)
有两种方法可以做到这一点:
使用您需要的内容创建HTML文件。使用velocity作为模板引擎。现在,在使用代码中的值替换占位符后,使用扩展名“.doc”或“.docx”保存文件。生成的文件将很好地打开。它将在Web布局中打开,用户可以根据需要切换到打印布局。
http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html
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)
您还可以查看: