ホーム » スタッフ » 斉藤徹 » Excel のファイルを扱う(Spreadsheet::ParseExcel)

2005年3月
 12345
6789101112
13141516171819
20212223242526
2728293031  

検索・リンク

Excel のファイルを扱う(Spreadsheet::ParseExcel)

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形式で保存してね!』 と伝えよう。

試作した就職情報のページ

ちなみに、 試作した就職情報のページはこちらを貼ってあります。 試作段階で、検索はいいかげん。使いやすくなるまで待ってね。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー