2013-04-02

【備忘録】jOpenDocument

Java で利用できるスプレッドシートのクラスが公開されていないかと探しているのですが、なかなか手頃なものが見つかりません。スプレッドシートと言っても、Excel のような高機能なものではなく、シンプルで好きなように加工しやすいものが欲しいのですが、いつもオープンソースで公開されていることを期待するのは、ちと虫のいい願いなのかもしれません。ここは諦めてスクラッチから自作するしかなさそうです。

目的とするものには出会えていませんが、jOpenDocument という面白そうなライブラリを見つけたので備忘録として紹介します。

jOpenDocemt は、OASIS で標準化された OpenDocument フォーマットを操作するための Java で記述されたライブラリです。ライセンスは GPL か(二種類の)商用ライセンスで配布されています。今回試したバージョンは jOpenDocument-1.3rc2.jar (Version 1.3 rc 2, March 11, 2013) です。Java 6 以上の環境が必要です。

使用環境

  • OS : Fedora 18 (Linux)
  • JDK : jdk-1.7.0_17-fcs.x86_64
  • IDE : NetBeans IDE 7.3
  • (libreoffice-calc-3.6.5.2-8)

以下は、紹介されているサンプルそのままを自分の環境にコピーしたものです。

package jopendocumenttest;

import java.io.File;
import java.io.IOException;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import org.jopendocument.dom.OOUtils;
import org.jopendocument.dom.spreadsheet.SpreadSheet;

public class JOpenDocumentTest {

    public static void main(String[] args) throws IOException {
        // Create the data to save.
        final Object[][] data = new Object[6][2];
        data[0] = new Object[]{"January", 1};
        data[1] = new Object[]{"February", 3};
        data[2] = new Object[]{"March", 8};
        data[3] = new Object[]{"April", 10};
        data[4] = new Object[]{"May", 15};
        data[5] = new Object[]{"June", 18};

        String[] columns = new String[]{"Month", "Temp"};

        TableModel model = new DefaultTableModel(data, columns);

        // Save the data to an ODS file and open it.
        final File file = new File("temperature.ods");
        SpreadSheet.createEmpty(model).saveAs(file);

        OOUtils.open(file);
    }
}

実行例を以下に示しました。

プログラムを実行すると、自分の環境にインストールされている LibreOffice Calc が起動されます。これは作成した文書の内容を確認するためです。プログラムの主目的は文書を作成する事です、一応念のため。

何かオフィス系の文書などの作成業務を自動化できる用途に威力を発揮できそうです。

参考サイト

  1. jOpenDocument Homepage. Open Document library

0 件のコメント: