Speadsheet::ParseExcel.pm - 0.08
by 川合孝典 (Hippo2000)
まだまだの状態のままですが、リリースしちゃってます。
履歴
0.08 2000/11/25
文字列関連のバグを修正しました(Thank you for your report Kim Namusk)
未定義の関数を使っていた箇所を修正しました(Thank you for your report Hirofumi Morisada)
0.07 2000/11/18
OLE::Storage_Liteを使うように変更しました。
文字列関連のバグを修正しました(Thank you for your report Hirofumi Morisada)
0.06 2000/10/3
名称の変更
OLE::Storage、Startupを標準では使うように戻しました。 (マクロが入った場合などうまく動かないことがあるので)
Valueをメソッドに変更しました プロパティ、隠しコマンド多数
0.02 2000/9/27
OLE::Storage、Startupなどのモジュールを必要としなくなりました。
Solarisでも動くように対応しました。(Thank you Mr.Shimamoto!)
CellsをWorkbookではなくWorksheetの属性に変更しました。
0.01 2000/9/21
最初のリリース
概要
このモジュールは、まだαバージョンです。
Microsoft社のExcelファイルをWindows以外のプラットフォームでも情報を取り
出すようにするモジュールです。
動作確認
DOS/V WindowsNT ver.4.0 Perl5.005
DOS/V TurboLinux ver.6.0 Perl5.005
Sun Sparc Solaris 2.6 Perl5.005
DOS/V Vine Linux 2.0 Perl5.005
Macintosh JPerl、FreeBSDでも動いているというレポートをいただいています
その他の環境で実行された方は、教えてください。
動いても動かなくても、ご協力よろしくお願いします。 <(__)>
簡単な確認(testディレクトリ)
sampleディレクトリに以下のファイルが入っています:
sample.pl :簡単なテストスクリプト(Spreadsheet::ParseExcel::FmtDefaultを使用)
sample_j.pl :簡単なテストスクリプト(Spreadsheet::ParseExcel::FmtJapanを使用、コードを指定して出力)
res_sample :sample.plの実行結果
res_sample_j:sample_j.plの実行結果(euc)
dmpEx.pl : Excelファイルの内容を表示する(Spreadsheet::ParseExcel::FmtDefaultを使用)
dmpExj.pl : Excelファイルの内容を表示する(Spreadsheet::ParseExcel::FmtJapanを使用)
簡単にこのモジュールの動きを確認したいだけであれば、dmpExj.plによって
指定したExcelファイルの内容を表示させることができます。
ex.
# perl -I.. dmpExj.pl Excel/Test97.xls euc
「-I..」は、親ディレクトリにあるSpreadsheet::ParseExcel.pmを利用するために指定します。
「Excel/Test97.xls」は対象となるファイル名。
「euc」は漢字を出力するときの文字コードです。euc、sjis、jisなど
Jcode.pmと同じです。
インストール
今回のバージョンからは、OLE::Storage_Liteを利用します。(他の方法はなくしました)
Spreadsheet::ParseExcel::FmtJapanを使用する場合、Jcode.pmを必要とします。(他のモジュールを必要としません。)
Perlの標準的なインストールになりました。このモジュール自体はPerlのみで作成されているので、コピーするだけでも動きます。
perl Makefile.PL
make
make test
make install (rootになって)
使い方
use strict;
use Spreadsheet::ParseExcel;
my $oExcel = new Spreadsheet::ParseExcel;
my $oBook = $oExcel->Parse('Excel/Test97.xls');
#または日本語対応では
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan;
my $oExcel = new Spreadsheet::ParseExcel;
my $oFmtJ = Spreadsheet::ParseExcel::FmtJapan->new(Code => 'euc'); #sjis、jisなどのコード
my $oBook = $oExcel->Parse('Excel/Test97.xls', $oFmtJ);
#情報の取り出し例
my($iR, $iC, $oWkS, $oWkC);
print "FILE :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";
print "AUTHOR:", $oBook->{Author} , "\n";
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) {
$oWkS = $oBook->{Worksheet}[$iSheet];
print "--------- SHEET:", $oWkS->{Name}, "\n";
for(my $iR = $oWkS->{MinRow} ;
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) {
for(my $iC = $oWkS->{MinCol} ;
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) {
$oWkC = $oWkS->{Cells}[$iR][$iC];
print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
}
}
}
問題点・バグ
最大の問題点であった「Exce97 デベロッパーズ キット」が手に入りました。
ただただHirofumi Morisadaさんに感謝、感謝です。
Excel97/2000で保存した場合、機種依存文字((株)やローマ数字のIなど)が〓になってしまいます。
#マッピングを考えないとまずいです。(今後対応予定)
まだテストもちゃんとできていません。とりあえずは動くでしょう。 <(__)>
TurboLinux Version 6で作成しているので、他の環境でどうなるのかとても気に
なります。
Solarisでは動作確認をしてもらいました。(まだ不具合がありそうですが)
コメント、バグレポートをお待ちしています 川合孝典:GCD00051@nifty.ne.jp
やらなきゃいけないこと:
テスト!
ドキュメントの整備
出力への対応 (^_^) Spreadsheet::WriteExcelを使っていただくのが一番
だれかまるごと引きついてくれる人はいませんか?(^^)
謝辞:
こんな半端な状態で謝辞もあったものではありませんが、以下のプログラム、
モジュールを参考にさせていただきました。
xlHtml
OLE::Storage
herbert (OLE::Storageに同梱されるツール)
Spreadsheet::WriteExcel
Solarisのデバッグは島本武氏がいなければ、成立しませんでした。
埜口晴美さんにはExcel2000のファイルをいただきました。
Hirofumi Morisadaさんからの情報で文字列のバグを発見、修正することができました。
そして「Excel97デベロッパーズキット」をどうもありがとうございました。
その他、たくさんの方からの動作報告やバグレポートをいただき感謝、感謝です。<(__)>