Speadsheet::ParseExcel.pm - 0.15 by 川合孝典 (Hippo2000) 履歴
0.15 2001/2/27 内部処理を大幅に変更しました 書式設定をSpreadsheet::ParseExcel::Utilityでサポートしました。 ->初リリース以来の大規模な変更になっています
0.13 2001/2/21 PPSがBOOK(通常はBook, Workbook)のものにも対応 (Thank you, Punam Chordia ) Makefile.PLでOLE::Storage_Liteのバージョンを定義 (Thank you, Aldo Calpini) Continue でのASCII->Unicodeパターンでのバグ修正 (Thank you, Tim Wills)
0.12 2001/2/3 Excel4 ファイルにも対応できるようにしたつもり (Thank you, Jeff Haferman and herbert) Parseの対象をスカラへのリファレンスやIO::Handleに広げたつもり (Thank you, Jeff Haferman) SSTのCONTINUEでのバグフィックス(Gennadiy) ExcelLocaltimeの曜日の修正
0.11 2001/1/26 コマンド0xEF(?)からEOF(0x0A)を読み飛ばすようにしました (Thank you, Phil DiFalco)
0.10 2001/1/15 式関連の関数を修正しました(_subFormula _subString) (Thank you, Ilter Cekic and Mike Edwards)
0.09 2000/12/15 FmtDefaultでの月名のリストが不完全だったのを修正しました (Thank you, Michael Edwards)
FmtJapan2を追加しました
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を必要とします。(他のモジュールを必要としません。) Spreadsheet::ParseExcel::FmtJapan2を使用する場合、Jcode.pm、Unicode::Mapを必要とします。 Perlの標準的なインストールになりました。このモジュール自体はPerlのみで作成されているので、コピーするだけでも動きます。
perl Makefile.PL make make test make install (rootになって)
FmtJapan2のために
機種依存文字に対応するためのFmtJapan2を0.09から同梱します。 利用するためにはUnicode::Mapをインストールするほか、以下の手順が必要になります:
(1) 同梱される"CP932Excel.map"を適切なディレクトリにコピーします。
(2) "CP932Excel"をマップ名として追加するために、Unicode::Map階層にあるREGISTRYに以下の行を追加します。 (mapのディレクトリ名は適切なディレクトリ名にしてください)
name: CP932Excel srcURL: $SrcUnicode/VENDORS/MICSFT/WINDOWS/CP932.TXT src: $DestUnicode/VENDORS/MICSFT/WINDOWS/CP932.TXT map: (コピー先のディレクトリ)/CP932Excel.map # Don't remove this line
使い方 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で保存した場合、FmtJapanでは機種依存文字((株)やローマ数字のIなど)が〓になってしまいます。 FmtJapan2では一応対応しているつもりです。
まだテストもちゃんとできていません。とりあえずは動くでしょう。 <(__)> TurboLinux Version 6で作成しているので、他の環境でどうなるのかとても気に なります。 Solarisでは動作確認をしてもらいました。(まだ不具合がありそうですが) コメント、バグレポートをお待ちしています 川合孝典:kwitknr@cpn.org やらなきゃいけないこと: テスト! ドキュメントの整備 出力への対応 (^_^) Spreadsheet::WriteExcelを使っていただくのが一番 だれかまるごと引きついてくれる人はいませんか?(^^) 謝辞: こんな半端な状態で謝辞もあったものではありませんが、以下のプログラム、 モジュールを参考にさせていただきました。 xlHtml OLE::Storage herbert (OLE::Storageに同梱されるツール) Spreadsheet::WriteExcel Solarisのデバッグは島本武氏と山路春奈さんがいなければ、成立しませんでした。(cloudyに感謝) 埜口晴美さんにはExcel2000のファイルをいただきました。 Hirofumi Morisadaさんからの情報で文字列のバグを発見、修正することができました。 そして「Excel97デベロッパーズキット」をどうもありがとうございました。 その他、たくさんの方からの動作報告やバグレポートをいただき感謝、感謝です。