▲ | ▼ | 目次 | OpenOffice.orgTop |
まず最初に、帳票プログラムの流れを解説します。
Java から OpenOffice.org の操作(Hello World 編)の大きな違いは、既にあるテンプレートファイルを読み込んで、そのテンプレートに値を設定するところです。
前回作成したプログラムとテンプレートの読み込みプログラムの違いを比較して見ましょう。
/** * 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 を指定することで、テンプレートを読み込んでいます。
帳票出力といえば、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)」などなど様々な形式がサポートされています。