仕事でExcelドキュメントの値を直接読み込みたい場面がありいろいろ調べたのでその結果です。
今利用している言語がPHPって事もありライブラリを探ってみたところ2つ見つけました。
どちらも使い方は簡単だったのですが、Excelファイルによっては読み込めない場合があり安定性がいまひとつでした。
他に方法はないかと考えたらサーバにPerl入ってるしPerlで組んでも問題ないだろうと判断。
探してみたらあっさりCPANにありました。
Spreadsheet::ParseExcel
こっちも利用はいたって簡単。更に読み込みたいファイルも無事に読み込めました。
■結果
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重持ちしている現場で楽になったりします。