Excelファイル読み込めるSpreadsheet::ParseExcel(Perl)

By | 2008/5/11 日曜日

仕事でExcelドキュメントの値を直接読み込みたい場面がありいろいろ調べたのでその結果です。
今利用している言語がPHPって事もありライブラリを探ってみたところ2つ見つけました。

どちらも使い方は簡単だったのですが、Excelファイルによっては読み込めない場合があり安定性がいまひとつでした。

他に方法はないかと考えたらサーバにPerl入ってるしPerlで組んでも問題ないだろうと判断。
探してみたらあっさりCPANにありました。
Spreadsheet::ParseExcel

こっちも利用はいたって簡単。更に読み込みたいファイルも無事に読み込めました。

■Excelファイル(Excel 2002)
サンプルExcel

■結果

0  0:a 1:b 
1  0:123 1:456 
2  0:感じ 1:カタカナ 
3  0: 1:ハンカク 

■ソース

#!/usr/bin/perl

use strict;
use warnings;

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan;

my $format = new Spreadsheet::ParseExcel::FmtJapan->new(Code => 'sjis');
my $excel = new Spreadsheet::ParseExcel;
my $book = $excel->Parse("test.xls", $format);

my $sheet = $book->{"Worksheet"}[0];

my $maxRow = $sheet->{"MaxRow"};
my $maxCol = $sheet->{"MaxCol"};

for(my $row=0; $row<=$maxRow; $row++) {
    print $row."  ";
    for(my $col=0; $col<=$maxCol; $col++) {
        my $cell = $sheet->{"Cells"}[$row][$col];
        my $val = "";
        if ($cell) {
            $val = $cell->Value;
        }
        print "$col:$val ";
    }
    print "\n";
}

※CPANからのインストールは割愛

これができるとExcelファイルを設定ファイルの変わりにできたり、設定ファイルを自動生成できるので便利です。
設定ファイルと設計書を2重持ちしている現場で楽になったりします。

コメントを残す

メールアドレスが公開されることはありません。