配列の配列にある値の範囲を、Excel スプレッドシートのセルの範囲に追加したいと考えています。私は次のように書きましたが、失敗します:
use Win32::OLE;
use Cwd;
eval {$excel = Win32::OLE->GetActiveObject('Excel.Application')};
die "Excel not installed" if $@;
unless (defined $excel)
{
$excel = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})
or die "Oops, cannot start Excel";
}
$workbook = $excel->Workbooks->Open(getcwd() . "/test.xlsx");
$worksheet = $workbook->Worksheets(1);
@matrix = ( [0, 1], [2, 3] );
$worksheet->Range("B5:C6")->{Value} = @matrix;
$worksheet->Save;
上記のコードは、セル B5:C6 を (0, 1, 2, 3) ではなく (2, 2, 2, 2) で更新しますが、この理由がわかりませんでした...何が間違っているのか?