« Excelから生成した方がいい | メイン | フォームの切り替え »

2004年11月29日

キリカ・グライト開発日誌:: 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 : 2004年11月29日 02:24




comments powered by Disqus
Total : Today : Yesterday : なかのひと