« グリッドクリック時の振る舞い | メイン | フォームの切り替え »

November 29, 2004

perlからExcelを使う

use Cwd;
use Win32::OLE;
use Win32::OLE::Variant;

Win32::OLE->Initialize();
$XL = Win32::OLE->new('Excel.Application', \&OleQuit) or die "oops\n"; #Excelのインスタンスを得る 2番目の引数の関数が終了時に呼ばれる
$XL->{Visible} = 0; #Excelを非表示で起動
$Books = $XL->Workbooks; #ExcelからWorkbooksを得る
$Books->Open( cwd . '/' . 'ModuleTest.xls'); #オープン時フルパスで指定しないと開けない
if( Win32::OLE->LastError() ) {
print "ファイルオープン時にエラーが発生しました。\n";
exit(1);
}
$Sheet = $XL->Worksheets->Item('Sheet1'); #指定した名前のシートを得る
$cellVal = $Sheet->Cells( 1, 2 )->{Value}; #指定したセルの値を得る
print $cellVal."\n";
Win32::OLE->Uninitialize();

#############################################################################
#終了時に呼ばれるっぽい
sub OleQuit {
my $self = shift;
$self->Quit; # $XL->Quit;が呼ばれている。これを呼ばないとExcelのプロセスが残ったままになってしまう。非表示で使っているときはタスクマネージャで終了させないといけない。。。
}

------
ってな感じで使う。
でも、perlを実行する環境にExcelがインストールされていないと使えない。
C++からの場合も似たような方法で出来るが、いろいろと面倒臭い。
C++からは、今後使わなさそうなので、備忘録としてここに書いて置かなくてもいいかな。
また、気が向いたらメモっておこう。

投稿者 Takenori : November 29, 2004 02:24 AM

Trackback Pings

このエントリーのトラックバックURL:
http://blog.kaede-software.com/mt-tb.cgi/378

コメント

Total : Today : Yesterday :