Excel のファイルを扱う(Spreadsheet::ParseExcel)
就職情報は最終的に Excel にて保存されているので、Excel のファイルを自由に読むために 以下の設定を行う。
≪ 関連の perl モジュールのインストール ≫ # apt-get install libspreadsheet-parseexcel-perl libunicode-map8-perl libi18n-charset-perl # perl -MCPAN -e shell cpan> install Unicode::Map cpan> exit
しかし、サンプルコードを動かすと が無い というエラーメッセージがでる。よって、以下の書き換えを行う。
≪ /usr/share/perl5/Spreadsheet/ParseExcel/FmtJapan2.pm を編集 ≫ ≪ CP932Excel → CP932 に書き換え ≫ #------------------------------------------------------------------------------ # new (for Spreadsheet::ParseExcel::FmtJapan2) #------------------------------------------------------------------------------ sub new($%) { my($sPkg, %hKey) = @_; my $oMap = Unicode::Map->new('CP932'); die "NO MAP FILE CP932!!" unless(-r Unicode::Map->mapping("CP932")); my $oThis={ Code => $hKey{Code}, _UniMap => $oMap, }; bless $oThis; $oThis->SUPER::new(%hKey); return $oThis; }
ちなみに、参考ページにて記載されているサンプルコードを試すが、 html 化する時に、一部プログラムが壊れていたみたい。 動作試験のコードは下記のとおり。
#!/usr/bin/perl use strict; use lib "/usr/local/lib/perl" ; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::FmtJapan2; my $excel = new Spreadsheet::ParseExcel; my $formatJ = Spreadsheet::ParseExcel::FmtJapan2->new(Code => 'euc'); my $book = $excel->Parse('求人情報17.xls', $formatJ); my $worksheet = $book->{Worksheet}[1]; # Book #0 for( my $row = $worksheet->{MinRow}; defined $worksheet->{MaxRow} && $row <= $worksheet->{MaxRow}; $row++) { for( my $col = $worksheet->{MinCol}; defined $worksheet->{MaxCol} && $col <= $worksheet->{MaxCol}; $col++) { print $worksheet->{Cells}[$row][$col]->{_Value}.","; } print "\n"; }
しかし、動かしてみると、一部のデータが読めていない。 どうも、Office 2000 形式が原因みたい。ファイルを別コピーして Excel 95 形式に直すと 全ての情報を読めることが確認できた。 ということで、就職相談室の方には、 95形式で保存してね!』 と伝えよう。
試作した就職情報のページ
ちなみに、 試作した就職情報のページはこちら 。 を貼ってあります。 試作段階で、検索はいいかげん。使いやすくなるまで待ってね。