| 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;
}
目次
索引
![]()
|