Excel Workbook を読み込む方法はいろいろ存在します。Excel 2003 までだとこんなのがありました。
Microsoft Excel Object Model (Automation) を利用
Automation (COM) を利用する方法はあまりにも有名なので、あえて説明する必要すらありませんね。これを利用すれば Microsoft Excel の全機能を制限なく扱うことができます。ただし、Microsoft Excel を利用するので Microsoft Excel が install されている環境でないと利用できません。また、server-side での実行も support されていません。詳しくは下記参照。
Excel binary file format を直接扱う
Binary format を直接扱う方法はおそらくやる人いないでしょう。昔は仕様が公開されていませんでしたが、現在は公開されています。まあ、やるのであれば頑張ってくださいとしか。。。
Microsoft JET を利用する方法は知らない人結構いるんじゃないでしょうか? Microsoft JET とはもともと Microsoft Access DB engine に接続するための data access provider ですが、その他の data source を扱うための Excel driver や Text File Driver を同梱しています。
これらの driver は当初 MDAC として別の component として提供されていましたが、Windows 2000 から OS に同梱されるようになり、Windows XP 以降では別の component として提供されることは無くなりました。なお、JET は MDAC 2.7 以降で MDAC から削除されていますが、Windows 2000 以降の OS では標準で Microsoft JET (version が古い可能性はある) が含まれているため、そのまま利用できます。
具体的な利用方法は下記を参照してください。
詳細の公式 reference は ODBC のものしかないですねぇ。
まあ、この公式情報の少なさが積極的に利用されない理由だったりすると思うんですが。もっともあまりにも簡単に扱えると Microsoft Excel の売り上げに響く可能性がありますからねぇ。。。
Excel を必要とせず Excel Workbook を扱える Microsoft JET ですが、いくつか制限があります。代表的なものとしては下記。
- 1 cell で扱える文字長は 255 (Unicode 510 bytes) まで
- Password 保護された workbook は扱えない (IRM 保護されたのももちろんダメ)
- Cell の data しか扱えない (AutoShape や Graph は扱えない)
これらの制限がありますが、それなりに利用価値はあるでしょう。Server-Side でも support されていますので。
あと、Microsoft Excel 2002 から利用可能になった、XML format (Office Open XML とは異なる) がありますが、ここでは扱いませんのであしからず。