Okapi Project

Java から OpenOffice.org の操作(テンプレート出力編)

バージョン
2004 年 1 月 30 日 Ver.1.0
作成者
J.Daita ( Xware )

要約

Java から OpenOffice.org の操作(Hello World 編)で作成したプログラムを変更して、帳票出力プログラムの基本を習得しましょう。

目次


1. 作成する帳票プログラムについて

まず最初に、帳票プログラムの流れを解説します。

  1. 帳票の概観であるテンプレートファイルを読み込みます。
  2. 指定した各セルに対して、それぞれ値を設定します。
  3. 値が設定されたドキュメントを Excel 形式のファイルに保存します。

Java から OpenOffice.org の操作(Hello World 編)の大きな違いは、既にあるテンプレートファイルを読み込んで、そのテンプレートに値を設定するところです。

1.1. テンプレートの読み込みプログラム

前回作成したプログラムとテンプレートの読み込みプログラムの違いを比較して見ましょう。


    /**
     * Calc ドキュメントを起動します。
     * @param oMSF XMultiServiceFactory
     * @return XSpreadsheetDocument
     */
    public static XSpreadsheetDocument
                          openCalc(final XMultiServiceFactory oMSF) {

        //define variables
        XInterface oInterface;
        XDesktop oDesktop;
        XComponentLoader oCLoader;
        XSpreadsheetDocument oDoc = null;
        XComponent aDoc = null;

        try {

            oInterface =
                (XInterface) oMSF.createInstance("com.sun.star.frame.Desktop");
            oDesktop =
                (XDesktop) UnoRuntime.queryInterface(
                    XDesktop.class,
                    oInterface);
            oCLoader =
                (XComponentLoader) UnoRuntime.queryInterface(
                    XComponentLoader.class,
                    oDesktop);
            PropertyValue[] szEmptyArgs = new PropertyValue[0];
            String doc = "private:factory/scalc";
            aDoc = oCLoader.loadComponentFromURL(doc, "_blank", 0, szEmptyArgs);
            oDoc =
                (XSpreadsheetDocument) UnoRuntime.queryInterface(
                    XSpreadsheetDocument.class,
                    aDoc);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return oDoc;
    }
  

Sample02.java openCalc()メソッド抜粋

  
    /**
     * Calc ドキュメントを起動します。
     * @param oMSF XMultiServiceFactory
     * @return XSpreadsheetDocument
     */
    public static XSpreadsheetDocument
                          openCalc(final XMultiServiceFactory oMSF) {

        //define variables
        XInterface oInterface;
        XDesktop oDesktop;
        XComponentLoader oCLoader;
        XSpreadsheetDocument oDoc = null;
        XComponent aDoc = null;

        try {

            oInterface =
                (XInterface) oMSF.createInstance("com.sun.star.frame.Desktop");
            oDesktop =
                (XDesktop) UnoRuntime.queryInterface(
                    XDesktop.class,
                    oInterface);
            oCLoader =
                (XComponentLoader) UnoRuntime.queryInterface(
                    XComponentLoader.class,
                    oDesktop);
            PropertyValue[] szEmptyArgs = new PropertyValue[0];
            String doc = "private:factory/scalc";

            //テンプレートの読み込み
            aDoc =
                oCLoader.loadComponentFromURL(
                    new File("template.sxc").toURL().toString(),
                    "_blank",
                    0,
                    szEmptyArgs);

            oDoc =
                (XSpreadsheetDocument) UnoRuntime.queryInterface(
                    XSpreadsheetDocument.class,
                    aDoc);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return oDoc;
    }
  

Sample03.java openCalc()メソッド抜粋

    が、既に作成したテンプレートを読み込むために修正した箇所で、作成したテンプレートのファイル名の URL を指定することで、テンプレートを読み込んでいます。

2. PDF 形式のファイルに保存する

帳票出力といえば、PDF で出力したいという要望が多いと思います。OpenOffice.org でも、PDF 形式の保存はサポートされています。
 基本的に、保存するプログラムのパラメータを変更することで、Excel 形式、PDF 形式といったファイルの保存形式を変更することが出来ます。

            XStorable xstorable =
                (XStorable) UnoRuntime.queryInterface(XStorable.class, myDoc);

            PropertyValue[] storeProps = new PropertyValue[1];

            storeProps[0] = new PropertyValue();

            storeProps[0].Name = "FilterName";
            storeProps[0].Value = "MS Excel 97";

            xstorable.storeAsURL(
                    new File("D:/test.xls").toURL().toString(),
                    storeProps);
sample02.java Excel 形式保存プログラム
            XStorable xstorable =
                (XStorable) UnoRuntime.queryInterface(XStorable.class, myDoc);

            PropertyValue[] storeProps = new PropertyValue[2];

            storeProps[0] = new PropertyValue();
            storeProps[0].Name = "FilterName";
            storeProps[0].Value = "calc_pdf_Export";

            storeProps[1] = new PropertyValue();
            storeProps[1].Name = "CompressionMode";
            storeProps[1].Value = "1";

            xstorable.storeToURL(
                          new File("D:/test.pdf").toURL().toString(),
                          storeProps);

sample04.java PDF 形式保存プログラム


Excel 出力、PDF 出力の他にも、HTML 形式「Value = HTML (StarCalc)」などなど様々な形式がサポートされています。


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.