Как создать файл ODT программно с Java? - PullRequest
23 голосов
/ 25 января 2011

Как программно создать файл odt (LibreOffice / OpenOffice Writer) с Java?Пример "Привет мир" будет достаточно.Я посмотрел на сайт OpenOffice, но документация не была ясна.

Ответы [ 6 ]

13 голосов
/ 25 января 2011

Взгляните на ODFDOM - API OpenDocument

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) нам сказали, что эти классы устарели ... большое время, а документация API OdfTextDocument говорит вам:

Начиная с версии 0.8.8, заменено на org.odftoolkit.simple.TextDocument в Простой API.

Это означает, что вы все еще включаете в свой проект тот же активный файл .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.

Между прочим, ссылка на документацию загружает кучу jar-файлов внутри .zip с надписью "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 должна быть очевидной.

8 голосов
/ 25 января 2011

Я не пробовал, но можно использовать JOpenDocument .(Кажется, это чистая библиотека Java для генерации файлов OpenDocument.)

3 голосов
/ 04 декабря 2012

Дополнением ранее заданных решений будет 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"));

При желании документы можно затем преобразовать в PDF, Word, RTF и т. Д. С помощью JODConverter .

Редактировать / обновление

Здесь вы можете найти пример проекта с использованием JODReports (с нетривиальными случаями форматирования).

2 голосов
/ 21 июня 2013

Я написал 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

Есть еще несколько примеров (включая один или два примера из электронной таблицы) здесь .

1 голос
/ 11 сентября 2015

Я искал ответ на этот вопрос для себя. Я работаю над проектом по созданию документов в разных форматах, и мне очень не хватало библиотеки для генерации ODT-файлов. Наконец, я могу сказать, что ODFToolkit с последней версией библиотеки simple-odf - это ответ для генерации текстовых документов. Вы можете найти официальную страницу здесь: Apache ODF Toolkit (Инкубация) - Простой API Вот страница для загрузки версии 0.8.1 (последняя версия Simple API) , поскольку я не нашел последнюю версию на официальной странице, только версия 0.6.1

И здесь вы можете найти Apache ODF Toolkit (инкубационная) поваренная книга

0 голосов
/ 01 октября 2013

Вы можете попробовать использовать JasperReports для генерации ваших отчетов, затем экспортировать его в ODS . Хорошая вещь об этом подходе -

  1. вы получаете широкую поддержку для всех форматов вывода JasperReports, например, PDF, XLS, HTML и т. Д.
  2. Jasper Studio позволяет легко создавать отчеты
...