Perl で Excel

Excel のシート名を列挙する

lesson001.pl


use Win32::OLE;

Win32::OLE::CreateObject("Excel.Application", $objExcel) || die "fail! : $!";
$objExcel->{Visible} = 1;
$objExcel->{DisplayAlerts} = 0; #警告メッセージをOFF

$objBook = $objExcel->WorkBooks->Open($ARGV[0]);

foreach $i (1..$objBook->WorkSheets->Count)
{
print $objBook->WorkSheets($i)->Name, "\n";
}

$objBook->Close();
$objExcel->Quit();

実行結果

C:\>perl c:\study\perl\chapter004\lesson001.pl c:\study\Book1.xls
Sheet1
Sheet2
Sheet3


print $objBook->WorkSheets($i)->Name, "\n";
は、

print $objBook->WorkSheets[$i]->Name, "\n";
じゃないかと思うかも知れないが、エラーになる。

C:\>perl c:\study\perl\chapter004\lesson001.pl c:\study\Book1.xls
syntax error at c:\study\perl\chapter004\lesson001.pl line 15, near "->WorkSheet
s["
Execution of c:\study\perl\chapter004\lesson001.pl aborted due to compilation er
rors.

↓ これでは、だめ

lesson002.pl


use Win32::OLE;

Win32::OLE::CreateObject("Excel.Application", $objExcel) || die "fail! : $!";
$objExcel->{Visible} = 1;
$objExcel->{DisplayAlerts} = 0; #警告メッセージをOFF

$objBook = $objExcel->WorkBooks->Open($ARGV[0]);

foreach $sheet ($objBook->WorkSheets)
{
print $sheet->Name, "\n";
}

$objBook->Close();
$objExcel->Quit();

実行結果

C:\>perl c:\study\perl\chapter004\lesson002.pl c:\study\Book1.xls