什么是用于创建Word文档的优秀Java API? [关闭]

问题

我有一个新的应用程序,我将在哪里生成一个包含表格,图形,目录和文本的Word文档。什么是一个很好的API用于此?你有多确定它支持图形,ToC和表格?使用它们有什么隐藏的问题?

一些澄清:

  • 我无法输出PDF,他们想要一个Word文档。
  • 他们使用的是MS Word 2003(或2007),而不是OpenOffice
  • 应用程序正在* nix app-server上运行

如果我可以从模板文档开始,只需用表格,图形等填充一些空格,那就太好了。

编辑:以下几个好的答案,每个都有自己的错误,就我目前的情况而言。很难从他们那里选择"最终答案"。我想我会把它打开,并希望能够创造出更好的解决方案。

编辑:OpenOffice UNO项目似乎与我的要求最接近。虽然POI肯定是主流,但它对我想要的东西来说太不成熟了。


#1 热门回答(53 赞)

2007年,我的项目成功使用OpenOffice.org的Universal Network Objects(UNO)接口,以编程方式从Java Web应用程序(Struts / JSP框架)生成MS-Word兼容文档(* .doc)以及相应的PDF文档。

OpenOffice UNO还允许你构建与MS-Office兼容的图表,电子表格,演示文稿等。我们能够动态构建复杂的Word文档,包括图表和表格。

我们使用带有书签插入的模板MS-Word文档简化了流程,软件插入了内容,但是,你可以从头开始完全构建文档。目标是让软件生成报告文档,这些文档可以由最终用户共享和进一步调整,然后再将其转换为PDF以进行最终交付和归档。

如果你希望用户使用OpenOffice而不是MS-Office,你可以选择以OpenOffice格式生成文档。在我们的例子中,用户想要使用MS-Office工具。

UNO包含在OpenOffice套件中。我们只是将Java应用程序链接到套件中与UNO相关的库。 AnOpenOffice Software Development Kit(SDK)包含示例应用程序和UNO Developer's Guide。

我没有调查最新的OpenOffice UNO是否可以生成MS-Office 2007 Open XML文档格式。

关于OpenOffice UNO的重要事项是:

  • 这是免费软件
  • 它支持多种语言(例如Visual Basic,Java,C等)。
  • 它与平台无关(Windows,Linux,Unix等)。

这是一些有用的网站:

  • 打开办公室主页
  • 打开Office UNO开发人员指南
  • OpenOffice Developer's Forum(尤其是"Macros and API"和"Code Snippets"论坛)。

#2 热门回答(29 赞)

我认为Apache POI可以做到这一点。一个可能的问题取决于你的目标使用可能是由于HWPF仍处于早期开发的事实。

HWPF是一组API,用于使用(仅)Java读取和写入Microsoft Word 97(-XP)文档。


#3 热门回答(8 赞)

你可以用这个:http://code.google.com/p/java2word

我实现了这个名为Java2Word的API。使用几行代码,你可以生成一个Microsoft Word文档。

例如。:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

有一些例子如何使用。基本上你需要一个jar文件。如果你需要任何有关如何设置的更多信息,请与我们联系。

*我这样写是因为我们在项目中有一个真正的必需品。更多在我的博客中:

http://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

为莱昂纳多喝彩