PerlからExcelを扱う
- PerlからExcelを扱う
- Excelのカラーリング
- マクロの見かた
PerlからExcelを扱う
use Win32::OLE を使うと Perl から Excel を使うことができます。 これは OLE という技巧で別に Excel だけでなく Wordなどでも使用することができます。#!/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() ;
#
上記のスクリプトの結果は以下のような感じです。Excelのカラーリング
上記で出てくるColorIndex は以下のところによると、以下のサイトのような感じになります。http://www.relief.jp/itnote/archives/000482.php
簡単にこっちでもつくってみました。
#!/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++;
}
}
#
マクロの見かた
PerlでExcelのコマンドで細かい動作を どうやって知るかですが、簡単なのはExcelのマクロを作って それのVB編集スクリプトを眺めてみることです。Excelのメニューバーから、ツール→マクロ→ 新しいマクロの記録、と選択してマクロの記録を開始します。
ここでいろいろ操作を行い、 マクロを停止させるとマクロが作成されます。
そのマクロをExcelのメニューバーから ツール→マクロ→マクロ、と選択しVBマクロの編集を選択すれば、 なにをやれば良いかだいたいわかります。
起源| ソース |Source : http://park.ruru.ne.jp/ando/work/perlTips/excel_ja.html
No comments:
Post a Comment