Как создать файл ODT программно с Java?
Как программно создать файл odt (LibreOffice/OpenOffice Writer) с Java? Пример "Привет, мир" будет достаточно. Я посмотрел на сайте OpenOffice, но документация не была ясна.
8 ответов
Взгляните на 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) нам сказали, что эти классы устарели... большое время, и OdfTextDocument
Документация по API говорит вам:
Начиная с версии 0.8.8, заменено на org.odftoolkit.simple.TextDocument в Simple 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 должна быть очевидной.
Я не пробовал это, но использование JOpenDocument может быть вариантом. (Кажется, это чистая библиотека Java для генерации файлов OpenDocument.)
Дополнением к ранее предоставленным решениям будет 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 (с нетривиальными случаями форматирования).
Я написал 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
Здесь есть еще несколько примеров (включая один или два примера из электронных таблиц).
Проект ODF Toolkit (код размещен на Github) — это новый дом бывшего проекта ODFDOM, который до 27 ноября 2018 года был проектом Apache Incubator .
Я искал ответ на этот вопрос для себя. Я работаю над проектом по созданию документов в разных форматах, и мне очень не хватало библиотеки для генерации ODT-файлов. Наконец, я могу сказать, что ODFToolkit с последней версией библиотеки simple-odf - это ответ для генерации текстовых документов. Вы можете найти официальную страницу здесь: Apache ODF Toolkit(Incubating) - Simple API. Вот страница для загрузки версии 0.8.1 (последняя версия Simple API), поскольку я не нашел последнюю версию на официальной странице, только версия 0.6.1
И здесь вы можете найти Apache ODF Toolkit(инкубационная) поваренная книга
Вы можете попробовать использовать JasperReports для генерации ваших отчетов, а затем экспортировать их в ODS. Хорошая вещь об этом подходе
- Вы получаете широкую поддержку всех выходных форматов JasperReports, например, PDF, XLS, HTML и т. д.
- Jasper Studio позволяет легко создавать отчеты
Решением может быть компания JODF Java API Independencentsoft. Например, если мы хотим создать файл Open Document с помощью этого Java API, мы могли бы сделать следующее:
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.