モジュールを使用せずにExcelファイルを読み取ることはできますか?通常のファイルを読むように試したところ、バイナリ文字が出力されました。おそらくエンコーディングのせいですか?
ただし、csvファイルの読み取りは正常に機能しています。
Excelファイルはバイナリファイルであり、2007年以前のファイルの形式は明らかにかなり毛深いです。ファイルは実際にはzip形式のXMLであると思う.xlsx
ので、解凍すると人間が読める形式になるはずですが、試したことはありません。なぜモジュールを使いたくないのですか?
興味があれば、さらに読んでください。
http://joelonsoftware.com/items/2008/02/19.html
http://en.wikipedia.org/wiki/Office_Open_XML_file_formats
モジュールを使用せずにExcelファイルを読み取ることはできますか?
理論的にはそうです。実際にはありません。
Excel XLSファイルは、バイナリファイル内のバイナリファイルです。最初のステップは、OLECOMドキュメントコンテナからExcelBIFFデータを解析することです。このデータは必ずしも順番に並んでいるとは限りません。
次に、Excel BIFFデータを解析して、バージョン間の違い、異なるエンコーディングの共有文字列テーブル、およびパーサーに不向きな方法で大きなデータレコードをマップするCONTINUEブロックを考慮に入れる必要があります。
Excel XLSX形式は、Zipコンテナ内のXMLファイルのコレクションであるため、少し簡単です。ただし、モジュールを使用していない場合でも、それでも問題が発生します。
Excelファイルを処理するPerlモジュールは、数百人時間の作業を表します。それらを回避するために、同様の量の作業を投資することを期待してください。
そして、なぜモジュールを使用できないのですか?
Excelスプレッドシートがどのような形式であるかを理解し、そのためのコードを作成して、プログラムで使用することができます。たぶんそれをモジュールとして書いてCPANに提出してください。一瞬待って!そのようなモジュールはすでにあります!
CPANの全体的な目的は、車輪の再発明をする必要がないようにすることです。あなたはExcelスプレッドシートを読む必要があります、そして誰かがこれをする方法を理解するために大変な仕事をして、そしてあなたにそれを無料で与えています。$ 40,000の価値1、そしてそれは無料であなたのものです!CPANシステムにより、モジュールのインストールが非常に簡単になります。コマンドを実行しますcpan
。何百時間もの作業を節約できるモジュールを避ける本当の理由はありません。
そして、どのタイプのモジュールを避けますか?それはすべてのモジュールですか、それとも標準ディストリビューションに含まれていないモジュールのみですか。ほとんどのPerlディストリビューションにデフォルトで含まれているにもかかわらず、モジュールであるという理由だけで、そのようFile::Copy
なものを使用しないとは思いません。Data::Dumper
1チームを雇ってExcelファイルを変換するコードを記述し、Perlプログラムで読み取れるようにすることを想像してみてください。彼らは、ファイル形式の詳細を把握し、あらゆる種類のエッジケースのコードを作成し、あらゆる種類のテストを実行して、実際に機能することを確認する必要があります。グラフ、埋め込みコンテンツ、リモートデータアクセスなどを含めない場合の概算は約200工数ですが、これは実際に文書化されているためです。