Spreadsheet::WriteExcel = Perl で Excel 出力

業務系アプリを書いていると、csv 出力ぢゃなくて、Excel データそのものを出力できたらなぁ・・・と思うことがあると思います。そこで、 Perl で Excel データを生成する方法と日本語を扱うときの注意点をまとめてみました。

環境構築編/必要な Perl モジュールをインストールします。
下記コマンドを root 権限のあるユーザで実行してください。
  • perl -MCPAN -e 'install Spreadsheet::WriteExcel'
  • perl -MCPAN -e 'install Spreadsheet::ParseExcel'
  • perl -MCPAN -e 'install Unicode::String'

日本語を含む Excel データの生成例
#!/usr/bin/perl -w

use strict;
use Jcode;
use Unicode::String qw(utf8 utf16);
use Spreadsheet::WriteExcel;

# Create a new workbook called simple.xls and add a worksheet
my $workbook  = Spreadsheet::WriteExcel->new("simple.xls");
my $uni_font  = $workbook->add_format(font => 'Arial Unicode MS');
my $worksheet = $workbook->add_worksheet(utf8( Jcode->new('シート1')->utf8 )->utf16,1);

# Write some text
$worksheet->write_unicode(0, 0,  utf8( Jcode->new('こんにちわ Excel!')->utf8 )->utf16);

# Write some numbers
$worksheet->write(2, 0,  3);          # Writes 3
$worksheet->write(3, 0,  3.00000);    # Writes 3
$worksheet->write(4, 0,  3.00001);    # Writes 3.00001
$worksheet->write(5, 0,  3.14159);    # TeX revision no.?

# Write some formulas
$worksheet->write(7, 0,  '=A3 + A6');
$worksheet->write(8, 0,  '=IF(A5>3,"Yes", "No")');

# Write a hyperlink
$worksheet->write(10, 0, 'http://www.perl.com/');

ポイントは、Unicode::String モジュールと Jcode モジュールで日本語を UTF-16BE に変換する必要があるという点です。面倒ですが、これだけで Excel データを生成できると考えればお手軽ぢゃぁありませんか。より詳しい情報はこちらから
- スポンサーリンク -