我以前和POI一起工作过,它肯定能够生成Word文档.但是魔鬼在于细节.
Word具有数千个功能:您可以将带有负缩进的#13开头的编号列表放入另一个表中包含的表的两个连接单元格中,该表本身就是项目符号列表的一部分…您明白了.当POI文档说他们是正在进行的工作时,这反映了可能是一个永远的状态,试图赶上(对我们,未记录的)Word规范.
具有合理“正常”使用特征的文档得到POI的良好支持,其接口和方法合理且一致,但有时需要一些工作.但正如Pascal所说,RTF也支持具有不太高功能的文档.
我几乎没有“做”RTF的经验,但它可能比使用POI更简单.
如果您在一个环境中工作或者客户坚持您生成的文档是.DOC而不是.RTF,那么POI几乎是您唯一的选择,除非您可以引入一个步骤,您可以使用一些Office自动化来将RTF转换为DOC.
更新:在此期间我还有更多想法.
您可以在几乎任何平台上使用POI或创建RTF文档.在我的工作中,所有正在进行此类处理的服务器恰好都在运行Linux.
但是,在可能的情况下,您的程序将在Windows下运行,还有另一种选择:Jacob http://www.land-of-kain.de/docs/jacob/
Jacob是Java的COM接口;它基本上允许您“远程控制”Windows程序,如Word和Excel.我上面链接的文件不是雅各布自己的网站,而是单页的“千篇一律”使用雅各布的食谱.该项目本身是在SourceForge:http://sourceforge.net/projects/jacob-project/但是人们声称,并且正确地说,文档有点缺乏.
Jacob优于所有其他解决方案,您正在处理“真正的”Word,因此Word的所有功能都可供您使用.如果您的文档的细节方面无法通过POI或RTF格式处理,则可以选择此选项.