プログラムで Java を使用して odt (LibreOffice/OpenOffice Writer) ファイルを作成するにはどうすればよいですか? 「hello world」の例で十分です。OpenOffice の Web サイトを見ましたが、ドキュメントが明確ではありませんでした。
7 に答える
ODFDOMを見てみましょう - OpenDocument API
ODFDOM は、無料の OpenDocument Format (ODF) ライブラリです。その目的は、ODF 仕様の詳細な知識を必要とせずに、ODF ファイルを作成、アクセス、および操作するための簡単で一般的な方法を提供することです。これは、オブジェクト指向言語に移植可能な簡単な lightwork プログラミング API を ODF 開発者コミュニティに提供するように設計されています。
現在のリファレンス実装は 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
ます。
リリース 0.8.8 以降、Simple 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
ちなみに、ドキュメントのリンクは、「0.6.1」と表示されている .zip 内の多数の jar ファイルをダウンロードしますが、内部のもののほとんどは 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を使用することも選択肢の 1 つかもしれません。(OpenDocumentファイルを生成するのは純粋なJavaライブラリのようです。)
以前に提供されたソリューションを補完するのがJODReports です。これにより、Office ドキュメントとレポートを 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 を使用したサンプル プロジェクトを見つけることができます (重要なフォーマット ケースを使用)。
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
ここに、さらにいくつかの例 (スプレッドシートの例を含む)があります。
JasperReportsを使用してレポートを生成し、それを ODS にエクスポートしてみてください。このアプローチの良いところは、
- すべての JasperReports 出力形式 (PDF、XLS、HTML など) を幅広くサポートします。
- Jasper Studioを使用すると、レポートを簡単にデザインできます