Contenu connexe
Similaire à Officeで使うPerl Excel編 (7)
Officeで使うPerl Excel編
- 15. Excel縛り
• 出退勤時間はWebで登録しているのに残業時間の報告
はExcelファイル!
• (なぜか)今までExcelで管理されてたデータをDBに
突っ込みたい!
• 自作ツールのマニュアルをExcelで欲しいと言われた
けど、Markdownで書いたものしかない……
※上記例はイメージであり、発表者の実体験に基づくものではありません。
- 25. Excelを開いて閉じる
# Excelオブジェクトを取得
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
# 新規Excelファイル
my $book = $excel->Workbooks->add();
# ファイルを保存
$book->SaveAs({Filename => "C:YAPCempty.xlsx“});
# クローズ
$book->Close();
$excel->quit();
- 26. Excelを開いて閉じる
# Excelオブジェクトを取得
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
# 新規Excelファイル 既にExcelが起動していたら、そのExcelを使う
my $book = $excel->Workbooks->add();
# ファイルを保存
$book->SaveAs({Filename => "C:YAPCempty.xlsx“});
# クローズ
$book->Close();
$excel->quit();
- 27. Excelを開いて閉じる
# Excelオブジェクトを取得
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
# 新規Excelファイル
起動してるExcelのプロセスがなければ、新規に起動
my $book = $excel->Workbooks->add();
# ファイルを保存
$book->SaveAs({Filename => "C:YAPCempty.xlsx“});
# クローズ
$book->Close();
$excel->quit();
- 28. Excelを開いて閉じる
# Excelオブジェクトを取得
my $excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
# 新規Excelファイル
my $book = $excel->Workbooks->add();
新しいワークブックを作って
# ファイルを保存
$book->SaveAs({Filename => "C:YAPCempty.xlsx“});
# クローズ
名前をつけて保存
$book->Close();
$excel->quit();
- 35. フォントの設定
for (my $i=1;$i<=5;$i++) {
$sheet->Cells($i,1)->{Value} = encode(cp932 => "サンプル".$i);
}
# フォントの設定
$sheet->Range("A1")->Font->{ColorIndex} = 5;
$sheet->Range("A2")->Font->{Bold} = 1;
$sheet->Range("A3")->Font->{Itaric} = 1;
$sheet->Range("A4")->Font->{Underline} = 1;
$sheet->Range("A5")->Font->{Size} = 20;
- 36. フォントの設定
for (my $i=1;$i<=3;$i++) {
$sheet->Cells($i,1)->{Value} = encode(cp932 => "サンプル".$i);
}
# フォントの設定
$sheet->Range("A1")->Font->{ColorIndex} = 5;
$sheet->Range("A2")->Font->{Bold} = 1;
$sheet->Range("A3")->Font->{Size} = 20;
フォントも指定できる
- 37. 罫線を引く
use Win32::OLE::Const 'Microsoft Excel';
# 罫線
$sheet->Range("B2")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeBottom)->{LineStyle} = 2;
$sheet->Range("B4")->Borders(xlEdgeBottom)->{LineStyle} = 3;
$sheet->Range("B5")->Borders(xlEdgeBottom)->{LineStyle} = 4;
$sheet->Range("B6")->Borders(xlEdgeBottom)->{LineStyle} = 5;
- 38. 罫線を引く
use Win32::OLE::Const 'Microsoft Excel';
事前にこれを書いておく
# 罫線
$sheet->Range("B2")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeBottom)->{LineStyle} = 2;
$sheet->Range("B4")->Borders(xlEdgeBottom)->{LineStyle} = 3;
$sheet->Range("B5")->Borders(xlEdgeBottom)->{LineStyle} = 4;
$sheet->Range("B6")->Borders(xlEdgeBottom)->{LineStyle} = 5;
- 39. 罫線を引く
use Win32::OLE::Const 'Microsoft Excel';
# 罫線
$sheet->Range("B2")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeBottom)->{LineStyle} = 2;
$sheet->Range("B4")->Borders(xlEdgeBottom)->{LineStyle} = 3;
$sheet->Range("B5")->Borders(xlEdgeBottom)->{LineStyle} = 4;
$sheet->Range("B6")->Borders(xlEdgeBottom)->{LineStyle} = 5;
セルの下側に線を引く
- 40. 罫線を引く
use Win32::OLE::Const 'Microsoft Excel';
# 罫線
$sheet->Range("B2")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlDiagonalDown)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlDiagonalUp)->{LineStyle} = 1;
四辺の他に斜めも引ける
- 44. もしかして……
$sheet->Range("B2")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("B2")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("B3")->Borders(xlEdgeBottom)->{LineStyle} = 1;
:
$sheet->Range("G14")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("G14")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("G14")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("G14")->Borders(xlEdgeBottom)->{LineStyle} = 1;
- 45. こうやれば簡単
# 罫線
$sheet->Range("B2:G14")->Borders(xlEdgeLeft)->{LineStyle} = 1;
$sheet->Range("B2:G14")->Borders(xlEdgeRight)->{LineStyle} = 1;
$sheet->Range("B2:G14")->Borders(xlEdgeTop)->{LineStyle} = 1;
$sheet->Range("B2:G14")->Borders(xlEdgeBottom)->{LineStyle} = 1;
$sheet->Range("B2:G14")->Borders(xlInsideHorizontal)->{LineStyle} = 1;
$sheet->Range("B2:G14")->Borders(xlInsideVertical)->{LineStyle} = 1;
- 58. 他にできること
• $sheet->PivotTableWizard(1, $sheet->Range(“A1:E7”), “PivotTable”);
• $book->Charts->Add;