web-dev-qa-db-ja.com

Javaでプログラム的にODTファイルを作成する方法?

Javaプログラムでodt(LibreOffice/OpenOffice Writer))ファイルを作成するにはどうすればよいですか?「Hello World」の例で十分です。OpenOfficeのWebサイトを見ましたが、ドキュメントが明確ではありませんでした。

24
baris

ODFDOM-the OpenDocument API を見てください。

ODFDOMは無料のOpenDocument Format(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年2月)では、これらのクラスは非推奨であると言われています...大きな時間であり、OdfTextDocument AP​​Iドキュメントは次のように述べています。

リリース0.8.8以降、シンプルAPIでorg.odftoolkit.simple.TextDocumentに置き換えられました。

つまり、プロジェクトには同じアクティブな.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.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は明らかです。

13
Adnan

試したことはありませんが、 JOpenDocument を使用することもできます。 (純粋なJava OpenDocumentファイルを生成するためのライブラリのようです。)

8
Jean Hominal

以前に与えられたソリューションの補足は JODReports です。これにより、ODB形式でOfficeドキュメントおよびレポートを作成できます(テンプレートから、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を使用してサンプルプロジェクトを見つけることができます(重要でないフォーマットの場合)。

3

プログラムでODFドキュメントを操作するためのjruby DSLを作成しました。

https://github.com/noah/ocelot

これは厳密にはJavaではありませんが、ODFDOMよりもはるかに使いやすくすることを目的としています。

Hello Worldドキュメントの作成は次のように簡単です。

% cat examples/hello.rb
include OCELOT

Text::create "hello" do
  paragraph "Hello, world!"
end

さらにいくつかの例があります(1つまたは2つのスプレッドシートの例を含む) here

2
g33kz0r

私自身もこの質問に対する答えを探しています。さまざまな形式のドキュメントを生成するプロジェクトに取り組んでおり、ODTファイルを生成するためのライブラリが必要でした。最終的に、simple-odfライブラリの最新バージョンを備えたODFToolkitがテキストドキュメントを生成するための答えであると言えるでしょう。公式ページはこちら: Apache ODF Toolkit(Incubating)-Simple API こちらが バージョン0.8.1(Simple APIの最新バージョン)をダウンロードするページ です。公式ページでは最新バージョンが見つかりませんでした。バージョン0.6.1のみです。

そして、ここで見つけることができます Apache ODF Toolkit(incubating)cookbook

1
aibrahim

JasperReportsを使用してレポートを生成してから、 export ODS に変換します。このアプローチの良い点は

  1. jasperReportsのすべての出力形式を幅広くサポートします。 PDF、XLS、HTMLなど.
  2. Jasper Studioを使用すると、レポートを簡単に設計できます
0
Hendy Irawan