如何用java以编程方式创建odt文件?

如何以编程方式使用Java创建odt(LibreOffice / OpenOffice Writer)文件? 一个“你好世界”的例子就足够了。 我查看了OpenOffice网站,但文档不清楚。

看看ODFDOM – OpenDocument API

ODFDOM是一个免费的OpenDocument格式(ODF)库。 其目的是提供一种简单的通用方法来创建,访问和操作ODF文件,而无需详细了解ODF规范。 它旨在为ODF开发人员社区提供易于轻松编程的API,可以移植到任何面向对象的语言。

当前的参考实现是用Java编写的。

// Create a text document from a standard template (empty documents within the JAR) OdfTextDocument odt = OdfTextDocument.newTextDocument(); // Append text to the end of the document. odt.addText("This is my very first ODF test"); // Save document odt.save("MyFilename.odt"); 

后来

在撰写本文时(2016-02),我们被告知这些类已被弃用…很长时间, OdfTextDocument API文档告诉您:

从0.8.8版本开始,由Simple API中的org.odftoolkit.simple.TextDocument取代。

这意味着您仍然在项目中包含相同的活动.jar文件, simple-odf-0.8.1-incubating-jar-with-dependencies.jar ,但是您希望解simple-odf-0.8.1-incubating-jar-with-dependencies.jar以下.jar以获取文档: simple-odf-0.8.1-incubating-javadoc.jar ,而不是odfdom-java-0.8.10-incubating-javadoc.jar

顺便提一下,文档链接在.zip中下载了一堆jar文件,里面写着“0.6.1”……但是里面的大部分东西看起来更像是0.8.1。 我不知道为什么他们在“弃用”类的文档中说“从0.8.8开始”:几乎所有内容都已标记为已弃用。

那么上面的等效简单代码是:

 odt_doc = org.odftoolkit.simple.TextDocument.newTextDocument() para = odt_doc.getParagraphByIndex( 0, False ) para.appendTextContent( 'stuff and nonsense' ) odt_doc.save( 'mySpankingNewFile.odt' ) 

PS正在使用Jython,但Java应该是显而易见的。

我没有尝试过,但使用JOpenDocument可能是一个选择。 (它似乎是一个生成OpenDocument文件的纯Java库。)

以前给出的解决方案的补充是JODReports ,它允许以ODT格式创建办公文档和报告(来自使用LibreOffice / OpenOffice.org Writer文字处理器组成的模板)。

 DocumentTemplateFactory templateFactory = new DocumentTemplateFactory(); DocumentTemplate template = templateFactory .getTemplate(new File("template.odt")); Map data = new HashMap(); data.put("title", "Title of my doc"); data.put("picture", new RenderedImageSource(ImageIO.read(new File("/tmp/lena.png")))); data.put("answer", "42"); //... template.createDocument(data, new FileOutputStream("output.odt")); 

可选地,可以使用JODConverter将文档转换为PDF,Word,RTF等。

编辑/更新

在这里,您可以找到使用JODReports的示例项目(具有非平凡的格式化案例)。

我编写了一个jruby DSL,用于以编程方式操作ODF文档。

https://github.com/noah/ocelot

它不是严格的Java,但它的目的是比ODFDOM更简单。

创建hello world文档非常简单:

 % cat examples/hello.rb include OCELOT Text::create "hello" do paragraph "Hello, world!" end 

这里还有一些示例(包括一个或两个电子表格示例)。

我一直在为自己寻找这个问题的答案。 我正在开发一个用于生成不同格式文档的项目,我对库生成ODT文件的需求很大。 我终于可以说,带有最新版本的simple-odf库的ODFToolkit是生成文本文档的答案。 你可以在这里找到官方页面: Apache ODF Toolkit(Incubating) – Simple API这是一个下载版本0.8.1(Simple API的最新版本)的页面,因为我在官方页面上找不到最新版本,只有0.6.1版本

在这里你可以找到Apache ODF Toolkit(孵化)食谱

您可以尝试使用JasperReports生成报告,然后将其导出到ODS 。 这种方法的好处是

  1. 您将获得对所有JasperReports输出格式的广泛支持,例如PDF,XLS,HTML等。
  2. Jasper Studio使您可以轻松设计报告