什么是创buildWord文档的好的Java API?

我有一个新的应用程序,我将在哪里生成一个Word文档,其中包含表格,graphics,目录和文本的表格。 什么是一个很好的API使用这个? 你有多确定它支持graphics,ToC和表? 什么是使用它们的一些隐藏的陷阱?

一些澄清:

  • 我不能输出PDF,他们想要一个Word文档。
  • 他们使用MS Word 2003(或2007),而不是OpenOffice
  • 应用程序正在* nix应用程序服务器上运行

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

编辑:下面几个很好的答案,每个都有自己的缺点,就我目前的情况。 很难从中挑选出“最终答案”。 想想我会把它打开,并希望有更好的解决scheme来创build。

编辑:OpenOffice UNO项目似乎是最接近我所要求的。 虽然POI当然是比较主stream的,但是我想要的东西太不成熟了。

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

OpenOffice UNO还允许您构buildMS-Office兼容的图表,电子表格,演示文稿等。我们能够dynamic构build复杂的Word文档,包括图表和表格。

我们通过使用带有书签插入的模板MS-Word文档简化了这个过程,软件插入了内容,但是您可以从头开始构build文档。 目标是让软件生成报告文件,最终用户可以共享和进一步调整报告文件,然后再将其转换为PDF格式,以便最终交付和存档。

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

UNO包含在OpenOffice套件中。 我们只是将我们的Java应用程序链接到套件中与UNO相关的库。 OpenOffice软件开发工具包 (SDK)包含示例应用程序和“UNO开发人员指南”。

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

关于OpenOffice UNO的重要内容是:

  1. 它是免费的
  2. 它支持多种语言(如Visual Basic,Java,C ++等)。
  3. 它是平台无关的(Windows,Linux,Unix等)。

这里有一些有用的网站:

  • 打开办公室的家
  • Open Office UNO开发人员指南
  • OpenOffice开发者论坛 (尤其是“macros和API”和“代码片段”论坛)。

我认为Apache POI可以完成这项工作。 一个可能的问题,取决于你的目标可能是由于HWPF还处于早期发展的事实。

HWPF是用于使用(仅)Java读取和写入Microsoft Word 97(-XP)文档的API集合。

你可以使用这个: 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 *

欢呼莱昂纳多

尝试使用Aspose.Words for Java,它可以在安装了Java的任何操作系统上运行。

如果您需要MS Word输出格式,它将输出文档到DOC,DOCX或RTF。 所有的支持同样好。

使用这个API,你可以从头开始创build一个文档,从字面上节点并设置它们的格式属性。 您也可以使用提供更高级别方法的DocumentBuilder,比如创build表格行,插入字段等等。或者您可以在现有的预创build文档之间复制/连接/移动部分,例如您想组装一个合同,只需抓取和复制来自几个文件和Aspose.Words文件将合并样式,列表格式正确的结果文件。

您将能够使用Aspose.Words插入TOC字段,但是到目前为止,当在Microsoft Word中打开文档时,TOC字段将需要字段更新。 但是,我们将在2010年初发布对TOC字段的全面支持。例如,它将构build完整的TOC,就像MS Word所做的那样。

我在Aspose.Words团队。

它只被简单地提过一次,所以我想叫出docx4j库,因为我比docx4j更成功了。 Apache POI对Word文档的支持不是很好。 另外,与Aspose.Words不同,docx4j是一个开源库。

唯一的缺点是用docx4j你必须创buildOffice Open XML(docx)格式文档而不是基于OLE2(doc)格式的文档。 这是Word 2007的默认格式,但Word 2003和更早版本的用户需要安装兼容包。

尝试Aspose.Words为Java。

Aspose.Words for Java是Java的高级(商业)类库,使您能够在Java应用程序中直接执行大量文档处理任务。

Aspose.Words for Java支持DOC,OOXML,RTF,HTML和OpenDocument格式。 借助Aspose.Words,您可以在不使用Microsoft Word的情况下生成,修改和转换文档。

您可以使用像JACOB一样的Java COM桥。 如果是从客户端,另一个select是使用Javascript。

我使用Aspose.Words在.NET中进行邮件合并。 我相信他们也有一个Java版本。

有一个名为JODConverter的工具,它连接到开放式办公室以暴露它的文件格式转换器,还有一些可以作为webapp(位于tomcat中)的版本以及一个命令行工具。 我一直在解决它的HTML和转换成.doc和PDF成功,这是一个相当大的项目,还没有活过,但我想我会去使用它。 http://sourceforge.net/projects/jodconverter/

iText非常易于使用。

如果您需要doc文件,您可以从命令行调用abiword (免费的轻量级多文本文本处理器),它有几个转换格式转换选项。

docx4j或poi,两者都是ASL v2

@wondersofcomputing:iText实际上是免费和开源的

经过多一点研究,我遇到了iText,一个PDF和RTF文件创buildAPI。 我想我可以使用RTF代来创build一个文档可读的文件,然后可以使用文档编辑并重新保存。

任何人都有使用iText的经验吗?

Bill,POI和iText API从编程的angular度来看非常相似。 我在过去和过去一起工作,发现他们都易于使用和有据可查。

通过iText,您可以在格式(RTF和PDF)之间进行切换,并对代码稍作修改。 如果我没有记错的话,内容是使用相同的调用进行布局的,然后使用几行代码将其设置为PDF或RTF。

但是我相信RTF中的格式与DOC相比是有限的。 我不知道你是否能够实现你正在寻找的高级function(表格,内嵌图片),如果有的话,没有一个体面的麻烦。

鉴于你所说的关于HWPF没有足够的function满足您的需求(我只处理POI的Excel方面),您最好的select可能是说服力量是PDF是这项工作最好的技术

过去我已经开发了基于XML的纯文字文件。 我使用.NET,但语言应该不重要,因为它是真正的XML。 这并不是最简单的做法(几年前有一个项目需要它)。这些只能在Word 2007或更高版本中使用 – 但是所有你需要的是微软的白皮书,它描述了每个标签的function。 您可以像使用Word一样完成所有您想要的标记(当然,最初更痛苦一点)。

经过多一点研究,我遇到了iText ,一个PDF和RTF文件创buildAPI。 我想我可以使用RTF代来创build一个文档可读的文件,然后可以使用文档编辑并重新保存。

任何人都有使用iText的经验吗?

又一个可能性,因为这是一个networking应用程序。

我能够呈现一个MIMEtypes设置为“application / msword”的HTML页面,导致浏览器产生Word导入HTML就好,允许编辑和保存,就像我会输出一个真正的Word文档。

表格工作正常,但我还没有得到工作的图像。 它可能就像在HTML中的一个标签一样简单,或者我可能不得不stream传包含图像数据的二进制响应的一个单独的部分,或者我还没有提出的其他方法。 🙂

即使这比请求晚得多,也可以帮助其他人。 Docmosis提供了一个用于以doc,pdf,odt格式使用文档作为模板创build文档的Java API。 它使用OpenOffice作为执行格式转换的引擎。 文件操作和人口由Docmosis本身执行。