繁体   English   中英

Java中的Word文档创建API

[英]Word document creation API in Java

我想使用模板创建一个word文档,替换一些变量(字段)并将其保存为新的word文档。

我在想使用Apache POI, http://poi.apache.org/它是否最适合这个目的? 你能分享一下你的印象吗?

我之前和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格式处理,则可以选择此选项。

这显然为时已晚,但自2013年以来,有一个更好,更灵活的word文档创建解决方案。

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

与使用POI相比,我对docx4j的运气要好得多。

如果您使用模板,并且不想从头开始创建word文档,据我所知,POI是一个非常好的解决方案。 您打开模板并选择要替换的区域。

他们说POI仍处于发展阶段,但我一直在生产环境中使用它,目前它的效果非常好。

我不确定POI中Word文档支持的确切状态,但根据POI网站,工作仍在进行中(不能说明这意味着什么)。 所以,此时,我不会使用POI,而是尝试生成RTF文档。 为此,您可以:

  • 使用RTFTemplate ,它是RTF到RTF引擎,可以生成RTF文档作为RTF模型和数据合并的结果。
  • 使用iText ,它主要是PDF生成器,但也可以生成RTF
  • 建立自己的自定义解决方案(但我不会这样做)。

我会选择iText。

我知道这个问题有点陈旧,但我想很多人仍然会在搜索引擎中找到这个问题,所以我发布了另一种可能性来做你想做的事情:

如果唯一的目标是使用Word模板并替换其中的某些值,您可以考虑将Word模板保存为单个xml(而不是docx),然后使用简单的Java并且不使用任何框架来处理它。 如果您想要做更多事情(例如创建列表或表),您可能还需要在加载像POI这样的框架之前考虑理解xml格式并编写自己的帮助程序。

以下是如何执行此操作的示例: http//dev-notes.com/code.php?q = 10

这是快速版本,如果你想要一个不错的版本,你可以尝试使用XML处理器。

PS:用户可能会注意到文件扩展名不是doc而是xml,他们可能会因此而责怪你,但没关系......只需将其重命名为doc,word将识别格式,每个人都很高兴;)

您应该查看Aspose.Words组件。 他们最近开始提供该组件的Java版本。

请参阅以下链接: Aspose.Word for Java

这支持Word自动化,创建和高级功能,如邮件合并,而无需在计算机上安装Microsoft Word实例。 真正的好处是,您可以在实际word文档的上下文中工作,而不必通过创建RTF等来妥协。

Java版本目前并不像.Net版本那样功能齐全,但主要核心功能就在那里,他们很快就会努力推出功能相当的版本。

此外,如果您购买Java版本,则会在创建新版本时获得多年免费升级/支持。

如果您正在使用docx文档,docx4j是一个选项。 像POI一样,它的开源。

我创建并使用了这个: http//code.google.com/p/java2word

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM