#!/usr/bin/perl
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
# エクセルオブジェクトを取得
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| die "cannot get active excel!";
# ファイルを開く
#my $book = $excel->Workbooks->Open( $filename );
# ブックを追加する
my $book = $excel->Workbooks->add() ;
#シートを取得する
my $sheet = $book->ActiveSheet;
# モノを書き込む
$sheet->Range("B1")->{Value} = "OLE Sample" ;
#データを取得する(配列)
my $data = $sheet->Range("B1")->{Value};
print "(" . $data . ")\r\n";
#データを取得する(配列)
my $array = $sheet->Range("A1:C1")->{Value};
print "(" . $$array[0][1] . ")\r\n"; # @@$arrayの2次元配列
#セルの色を指定する(単体)
$sheet->Range("A1")->Interior->{ColorIndex} = 6;
#セルの色を指定する(範囲)
$sheet->Range("A8:G8")->Interior->{ColorIndex} = 6;
#線を引く
#Const xlContinuous = 1;
$sheet->Range("C2")->Borders(xlDiagonalUp)->{LineStyle} = 1;
$sheet->Range("C3")->Borders(xlDiagonalDown)->{LineStyle} = 1;
$sheet->Range("C4")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("C5")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("C6")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("C7")->Borders(xlEdgeBottom)->{LineStyle} = 1;
#縦列の幅を変える
$sheet->Columns("A:A")->{ColumnWidth} = 4.00;
#折り返しを有効にする
$sheet->Range("A1")->{WrapText} = 1;
#ブックを閉じる
#$book->Close() ;
#エクセルを閉じる
#$excel->quit() ;
#
上記のスクリプトの結果は以下のような感じです。#!/usr/bin/perl
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
# エクセルオブジェクトを取得
$excel = Win32::OLE->GetActiveObject('Excel.Application')
|| die "cannot get active excel!";
# ブックを追加する
$book = $excel->Workbooks->add() ;
#シートを取得する
$sheet = $book->ActiveSheet;
@work = ("A","B","C","D","E","F","G","H","I","J");
$i = 1;
for ($k = 1 ; $k <= 7 ; $k++ ) {
for ($j = 0 ; $j < 8 ; $j++) {
$cell = $work[$j] . $k;
$sheet->Range($cell)->{Value} = $i;
$sheet->Range($cell)->Interior->{ColorIndex} = $i;
$i++;
}
}
#