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

时间:2011-01-25 08:41:05

标签: java openoffice.org odt

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

7 个答案:

答案 0 :(得分:13)

查看ODFDOM - the 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版本开始,由org.odftoolkit.simple.TextDocument取代   简单的API。

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

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

以上的等效简单代码是:

odfdom-java-0.8.10-incubating-javadoc.jar

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

答案 1 :(得分:8)

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

答案 2 :(得分:3)

以前给出的解决方案的补充是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等。

编辑/更新

Here您可以使用JODReports找到一个示例项目(包含非平凡的格式化案例)。

答案 3 :(得分:2)

我编写了一个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

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

答案 4 :(得分:1)

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

在这里你可以找到Apache ODF Toolkit (incubating) cookbook

答案 5 :(得分:0)

您可以尝试使用 JasperReports 生成报告,然后export it to ODS。这种方法的好处是

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

答案 6 :(得分:-1)

该解决方案可能是JODF Java API Independentsoft公司。 例如,如果我们要使用此Java API创建一个Open Document文件,则可以执行以下操作:

import com.independentsoft.office.odf.Paragraph;
import com.independentsoft.office.odf.TextDocument;

public class Example {

    public static void main(String[] args)
    {
        try
        {
            TextDocument doc = new TextDocument();

            Paragraph p1 = new Paragraph();
            p1.add("Hello World");

            doc.getBody().add(p1);

            doc.save("c:\\test\\output.odt", true);
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

该API也有.NET解决方案。