ページ更新: 2005-01-29 (土) (5224日前)

(2001.07.19作成)

perl SpreadSheet::ParseExcel

対象は Debian GNU/Linux (現在は woody) です。ただし、途中までは Windows + ActivePerl で作成しています。

[編集]

情報源 #

CPAN Spreadsheet::ParseExcel
http://search.cpan.org/search?dist=Spreadsheet-ParseExcel

CPAN Spreadsheet::WriteExcel
http://search.cpan.org/search?dist=Spreadsheet-WriteExcel

河馬屋二千年堂's Page
http://homepage3.nifty.com/hippo2000/

SpreadSheet::ParseExcel モジュールは、Debian GNU/Linux Woody のパッケージ、Active Perl (for Win32) のppm の両方に存在します。

CPAN で入手しても良いが、どうせなら……ということでパッケージ、ppmから入手しました。

Debianの方は、http://localhost/doc/libspreadsheet-parseexcel-perl/README

For FmtJapan2 If you use FmtJapan2, you must do following actions:

/usr/local/lib/perl/5.6.1/Unicode/Map/REGISTRY に追加

Excel95〜97 形式では FmtJapanを、Excel2000(Unicode)では FmtJapan2 を /usr/share/doc/libspreadsheet-parseexcel-perl/CP932Excel.map.gz を

2001.09.23

Debian に Unicode::Map (libunicode-map-perl パッケージ) を発見。最近追加されたようだ。 (dselect の「New Optional package」で発見。

$ perl parse.pl news.xls > t
Can't locate Unicode/Map.pm in @INC (@INC contains: /usr/local/lib/perl/5.6.1 /u
sr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /u
sr/share/perl/5.6.1 /usr/local/lib/site_perl /usr/local/lib/perl/5.6.0 /usr/loca
l/share/perl/5.6.0 /usr/lib/perl5/5.6 /usr/lib/perl5/5.005 .) at /usr/share/perl
5/Spreadsheet/ParseExcel/FmtJapan2.pm line 9.
BEGIN failed--compilation aborted at /usr/share/perl5/Spreadsheet/ParseExcel/Fmt
Japan2.pm line 9.
Compilation failed in require at parse.pl line 6.
BEGIN failed--compilation aborted at parse.pl line 6.

# apt-cache search unicode | grep perl
libi18n-charset-perl - Perl module for mapping character set names to IANA names
libjcode-pm-perl - Perl extension interface to convert Japanese text
libunicode-map8-perl - Perl module to map 8bit character sets to Unicode
libunicode-string-perl - Perl modules for Unicode strings

# apt-get install libunicode-map8-perl
# apt-get install libi18n-charset-perl

→どちらのパッケージにも Unicode::Map モジュールが入ってなかったので、CPANから取得

# perl -MCPAN -e shell
cpan> install Unicode::Map
   :(略)
/usr/bin/make install -- OK
cpan>exit
#!/usr/bin/perl

use strict;

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan2;

    my $excel = new Spreadsheet::ParseExcel;
    my $formatJ = Spreadsheet::ParseExcel::FmtJapan2->new(Code => 'euc');

    my $book = $excel->Parse('news.xls', $formatJ);
    my $worksheet = $book->{Worksheet}[0];   # Book #0

    for( my $row = $worksheet->{MinRow}; 
         defined $worksheet->{MaxRow} && $row <=  $worksheet->{MaxRow}; $row++) {

        for( my $col = $worksheet->{
            print $worksheet->{Cells}[$row][$col]->Value;
        }
        print "\n";
    }

Spreadsheet::ParseExcel - ごくごく普通の使い方メモ - iandeth. 2006/07/06
http://iandeth.dyndns.org/mt/ian/archives/000626.html