Apdesigner プログラマーズガイド |
目次 索引 |
第3部 Apdesigner利用編 | > 第11章 Javaアプリケーション処理手続きを記述する |
Javaで記述したイベント処理から、OLEオートメーションサーバ(以降、OLEサーバと略します)を操作することができます。これを「OLEオートメーション機能」と呼びます。
ここでは、OLEオートメーションの処理記述について示します。
OLEサーバを生成または取得するためには、CDOleSysクラスの以下のサービスメソッドとCDVariantクラスを使います。
生成したOLEサーバのオートメーションは、CDVariantクラスとして復帰します。プロパティの参照または設定を行うために、getPropertyまたはsetPropertyメソッド、メソッド呼出しを行うためにinvokeメソッドを使用します。
なお、各クラスの詳細については、"Apworksリファレンス Javaサービスクラス編"を参照してください。
CDVariantクラスを使用し、CDVariantクラスが配列を意味する場合、parrayフィールドをキャストする必要があります。以下に例を示します。
例1
・ ・ ・ CDVariant var1; // OLEサーバ(server)から"Property1"という名前のプロパティを参照します。 // このプロパティはbyteの一次元配列が返却されることを仮定しています。 var1 = server.getProperty("Property1"); // 返却されたCDVariantのbyte1次元の配列を参照します。 byte[] a = (byte[])var1.parray; ・ ・ ・
例2
・ ・ ・ CDVariant var2; // OLEサーバ(server)から"Property2"という名前のプロパティを参照します。 // このプロパティはintの二次元配列が返却されることを仮定しています。 var2 = server.getProperty("Property2"); // 返却されたCDVariantのint2次元の配列を参照します。 int[][] b = (int[][])var.parray; ・ ・ ・
OLEオートメーションの解放のタイミングは、以下のどちらかで行われます。
ガーベージコレクトおよびファイナライザ実行のタイミングは不定期です。そのため、OLEオートメーションで使用したリ、ソースを解放したりするには、clearメソッドを利用してOLEオートメーションを明示的に解放するようにします。
例
CDVariantクラスのclearメソッドを実行し、OLEオートメーションを解放する例を、以下に示します。
public static void main(String[] arg) { CDVariant Excel = CDOleSys.createOLEAutoObject("Excel.Sheet"); . . . Excel.clear(true); // ExcelのOLEオートメーションを解放します。 }
Java記述によるOLEオートメーションの例を、以下に示します。
例
アテンション(UPDATEEXCEL)が発生したときに、Excelを起動し、セルの値を書き換え、ファイルに保存して終了するという処理を記述しています。
public boolean processAttention_UPDATEEXCEL() { CDVariant excel; CDVariant workbooks; CDVariant workbook; CDVariant worksheet; CDVariant cell; try{ // Excelを起動します。 excel = CDOleSys.createOLEAutoObject("Excel.Application"); // Excelを可視状態にします。 excel.setProperty("Visible", 1); // ファイルc:\goods.xlsを開きます。 workbooks = excel.getProperty("Workbooks"); workbook = workbooks.invoke("Open", "c:\\goods.xls"); // セル(1,1)に"ABCDEFG"を設定します。 worksheet = workbook.getProperty("Worksheets", "sheet1"); cell = worksheet.getProperty("Cells", 1,1); cell.setProperty("Value", "ABCDEFG"); // ファイルを保存します。 workbook.invoke("Close",1); // Excelを終了します。 excel.invoke("Quit"); }catch(Exception e){ System.out.println(e.toString()); } // OLEオートメーションを解放します。 cell.clear(true); worksheet.clear(true); workbook.clear(true); workbooks.clear(true); excel.clear(true); return true; }
目次 索引 |