我有一个新的应用程序,我会努力,我必须生成一个包含表格,图表,内容和文字表中的Word文档。 什么是一个很好的API使用这个? 如何确保你它支持图表,技术选择委员会,和表? 什么是一些隐藏的疑难杂症在使用它们?
一些澄清:
- 我不能输出PDF,他们想要一个Word文档。
- 他们使用的MS Word 2003(或2007),不OpenOffice的
- 应用程序是* nix中的应用程序服务器上运行
这会是很好,如果我可以用一个模板文档开始,只需填写一些空间与表格,图表等。
编辑:下面有几个很好的答案,每个都有自己的缺点就我目前的情况。 很难选择从他们“最终答案”。 我想我会离开它打开,并希望要创建更好的解决方案。
编辑:OpenOffice的UNO项目似乎最接近的是什么,我提出的要求。 虽然POI肯定是比较主流的,它是我想要的东西太不成熟。
Answer 1:
2007年,我的项目成功地使用OpenOffice.org的通用网络对象 (UNO)接口编程产生的MS-WORD文档兼容格式(* .doc),以及相应的PDF文档,从Java Web应用程序(一个Struts / JSP的框架)。
OpenOffice的UNO,您还可以建立MS-Office兼容的图表,表格,演示文稿等,我们能够动态地建立复杂的Word文件,包括图表和表格。
我们通过使用模板MS-Word文件,书签插入到该软件插入的内容,但是,你可以完全从头开始建立文件简化了操作步骤。 我们的目标是让软件生成,可以将它们转换为PDF格式的最终交付和归档之前被共享,并进一步调整了最终用户的报告文件。
如果你希望用户使用OpenOffice而非微软Office,你可以选择性地在OpenOffice的格式出示证件。 在我们的情况下,用户希望使用微软Office工具。
UNO包括OpenOffice套件内。 我们只是挂我们的Java应用程序在套件内UNO相关的库。 一个OpenOffice的软件开发工具包 (SDK)可包含例如应用程序和UNO开发人员指南。
我没有调查最新的OpenOffice的UNO能否产生微软Office 2007的Open XML文档格式。
关于OpenOffice的UNO最重要的事情是:
- 它是免费软件
- 它支持多国语言(如Visual Basic中,Java和C ++,和其他人)。
- 它是独立于平台(Windows,Linux和Unix等)。
以下是一些有用的网站:
- 开放式办公家
- 开放式办公UNO开发人员指南
- OpenOffice的开发者论坛 (特别是“宏和API”和“代码段”论坛)。
Answer 2:
我认为Apache的POI可以做的工作。 这取决于你的目标使用一个可能的问题可能的事实,HWPF仍处于早期发展所引起的。
HWPF是阅读和使用(只)的Java编写的Microsoft Word 97(-XP)文档的API集。
Answer 3:
您可以使用此: http://code.google.com/p/java2word
我实现了这个API称为Java2Word。 用几行代码,就可以生成一个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 *
莱昂纳多欢呼
编辑 :项目链接移到https://github.com/leonardoanalista/java2word
Answer 4:
尝试使用Aspose.Words for Java中,它运行在安装Java的任何操作系统。
它会输出,如果你需要一个微软Word输出格式的文件DOC,DOCX或RTF。 所有支持同样出色。
使用这个API,你可以从节点从头开始创建文档,从字面上并设置其格式属性。 您还可以使用的DocumentBuilder提供更高水平的方法,如创建一个表行,插入域等也可以复制/加入现有的预创建的文档之间/移动的部分,说你要组建一个合同,只是抓住并复制从几个文件和使用Aspose.Words件将合并样式列表格式等所产生的文件正确英寸
您将可以使用插入一个使用Aspose.Words TOC领域,但截至今天,该文件在Microsoft Word中打开时,TOC域将需要一个字段更新。 但是,我们要释放TOC领域全力支持早在2010年,例如,将构建完整的TOC如MS Word做的。
我在使用Aspose.Words团队。
Answer 5:
它仅是简单提到过一次,所以我想叫出docx4j库,我已经与docx4j比什么都更成功。 Apache的POI对Word文档的支持不是很好。 此外,与使用Aspose.Words,docx4j是一个开源库。
唯一的缺点是,你必须创建的Office Open XML(DOCX)格式的文件,而不是基于OLE2-(DOC)格式的文件docx4j。 这是Word 2007中的默认格式,但Word 2003和更早版本的用户需要安装兼容包。
Answer 6:
尝试使用Aspose.Words为Java。
使用Aspose.Words for Java是一种先进的(商业)类库的Java,使您能够直接在您的Java应用程序执行的文件处理任务的范围很大。
使用Aspose.Words的Java支持DOC,OOXML,RTF,HTML和OpenDocument格式。 随着使用Aspose.Words您可以生成,修改和转换文档,而无需使用Microsoft Word。
Answer 7:
您可以使用Java COM桥像JACOB 。 如果是从客户端,另一种选择是使用JavaScript。
Answer 8:
我用使用Aspose.Words做邮件合并在.NET。 我相信他们也有Java版本。
Answer 9:
有一个叫JODConverter工具,挂钩到开放式办公揭露它的文件格式转换器,还有可作为Web应用程序的版本(坐落在Tomcat的),你张贴和命令行工具。 我在它被发射html和转换为.doc和PDF成功地它在一个相当大的项目,没有去现场,但是我想我会使用它。 http://sourceforge.net/projects/jodconverter/
Answer 10:
iText的是很容易使用。
如果您requiere DOC文件,您可以从命令行调用AbiWord的 (免费lightweigh多操作系统的文本。处理器),它有几个转换格式转换选项。
Answer 11:
docx4j或POI,这两者都是ASL V2
@wondersofcomputing:iText的其实是自由和开放源码
Answer 12:
多一点研究,我碰到iText的,一个PDF和RTF文件创建API。 我想我可以使用RTF一代创建,然后可以使用文档并重新保存编辑的文件可读的文件。
任何人有任何的iText的经验,以这种方式使用?
法案,POI和iText的API是从编程的角度来看非常相似。 我既在过去的工作,发现它们都易于使用,并且有据可查。
随着iText的你获得了能够与格式小的改动的代码(RTF和PDF)之间切换的优势。 如果我没有记错的内容是制定了使用相同的电话,然后为PDF或RTF使用几行代码集。
不过,我相信,在RTF格式相比,DOC是有限的。 我不知道,如果你能够实现你正在寻找(表,内联图像)的高级功能,而无需麻烦的像样的数目,如果在所有。
鉴于你所说的话,大约HWPF没有满足您的需要足够的功能(我只处理了POI的Excel的一侧)你最好的选择可能是说服是PDF是这个职位的最佳技术的权力 。
Answer 13:
我已经在过去开发的纯基于XML的Word文件。 我所使用的.NET,但语言不应该的问题,因为它是忠实地XML。 这不是最容易做的事情(有这样的要求是几年前的一个项目。)这些都只是在Word 2007或以上的工作 - 但所有你需要的是微软的白皮书,描述了每个标签做什么。 你可以做到你想要的,如果你是Word中使用标签以同样的方式(当然多一点痛苦的开始。)
Answer 14:
多一点研究,我碰到iText的 ,一个PDF和RTF文件创建API。 我想我可以使用RTF一代创建,然后可以使用文档并重新保存编辑的文件可读的文件。
任何人有任何的iText的经验,以这种方式使用?
Answer 15:
另一种可能性,因为这是一个Web应用程序。
我能渲染HTML页面的MIME类型设置为“应用程序/ msword”,从而导致浏览器产卵Word中其进口的HTML得很好,让编辑和保存,就好像我倒是输出一个真正的Word文档。
表做工精细,但我还没有得到的图像仍然工作。 它可以是如刚刚在HTML标记中一样简单,或我可能要流含有以二进制的图像数据,或一些其他方法我还没有想出尚未响应的一个单独的部分。 :)
Answer 16:
虽然这是远远晚于该请求,它可能会帮助别人。 Docmosis提供了DOC,PDF创建文档,使用文档另存为模板ODT格式的Java API。 它使用的OpenOffice作为发动机来进行格式转换。 文档操作和人口由Docmosis自身执行。
文章来源: Is there a Java API that can create rich Word documents? [closed]