Spreadsheet::WriteExcel

最終更新日時:2010-05-10 19:03:52
Perl

概要


Spreadsheet::WriteExcel は、Perl で Excel ファイルを生成するためのモジュールです。
これを使えば、非常に簡単に Excel ファイルが生成できます。

インストール


Parse::RecDescent が必要となるので、前もってインストールしておきます。
Spreadsheet::WriteExcel 自体は CPAN にあるので、簡単にインストールできます。

使用方法


Spreadsheet::WriteExcel の perldoc ページを見れば簡単に使えるかと思います。

 use Spreadsheet::WriteExcel;
 
 # インスタンス生成
 my $workbook = Spreadsheet::WriteExcel->new('perl.xls');
 
 # ワークシート作成
 $worksheet = $workbook->add_worksheet();
 
 # フォーマットを作成し、定義
 $format = $workbook->add_format(); 
 $format->set_bold();
 $format->set_color('red');
 $format->set_align('center');
 
 # テキストを挿入
 $worksheet->write(0, 0, 'rows:1' , $format);
 $worksheet->write(1, 0, 'rows:2' );
 
 # テキストを挿入その2
 $worksheet->write('A3', 1.2345);
 $worksheet->write('A4', '=SIN(PI()/4)');


フォーマットは、一括で指定することも出来ます。

 $format->set_properties( font => "MS UI Gothic", bold => 1, size => 16);


標準出力に出力する


インスタンス生成時に出力ファイル名を指定しますが、ここはファイルハンドルが指定できますので標準出力に出力することも出来ます。
ただし、Excel ファイルはバイナリファイルですので、binmode 指定が必要です。

 binmode(STDOUT);
 my $workbook = Spreadsheet::WriteExcel->new(\*STDOUT);



日本語対応


Spreadsheet::WriteExcel は utf16 なエンコーディングの文字列でないと日本語は扱えなかったようですが、最近のバージョンでは utf8 フラグが付いた文字列であれば正常に扱えるようです。
例えば、以下のような感じで日本語が使えます。

 use utf8;
 
 ...
 
 utf8::decode($text);
 $worksheet->write(0, 0, $text, $format);


お問い合わせは 掲示板 にて。