Excel から csv のデータに変換するのにどうしようかなーと思ってぐぐったら phpExcelReader が楽そうだったので使ってみた。Excelにもバージョンいろいろあるけどそのへんはぐぐるべし。今回はExcel2003で普通に作ったファイルが読めればOKということにする。
今のバージョンだと reader.php 中で require_once しているところでファイル名の指定を間違えてるので直す必要がある。それ以外は問題なしだと思う。以下コード
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP932');
$data->read('hoge.xls');
読み込み自体はこれだけでOK。あとは $data を参照すればセルの内容とか取れる。んで、これを var_dump() したら容量が膨大になったので適当に省略しまくる。ぶっちゃけCSVに落とせれば他のデータはいらないので、$data->sheets 以外は必要なかったりする。
var_dump($data);
object(Spreadsheet_Excel_Reader)#1 (18) {
["boundsheets"] => array(2) { // シートの種類
[0] => array(2) {
["name"] => string(12) "シートその1"
["offset"] => int(7108)
}
}
["formatRecords"] => array(19) { // しらね。
[5] => string(19) """#,##0;""-#,##0"
}
["sst"] => array(60) { // セルの列挙。空のセルは無視されるようだ。
[0] => string(10) "abcdefghij"
}
["sheets"]=> array(2) {
[0]=> array(5) { // 各シート毎のデータ及びセルリスト
["maxrow"] => int(0)
["maxcol"] => int(0)
["numRows"] => int(2)
["numCols"] => int(28)
["cells"] => array(2) // ここからセル一覧{
[1] => array(28) { // 1列目
[1] => string(11) "abcdefghij" // 1行目
}
}
}
}
["data"] => /*xlsのバイナリ? 中身はよく見てない。*/
["_ole"] => object(OLERead)#2(12) {
["data"] =>
/*ここもバイナリっぽいあれ ここも中身は見てない。*/
}
/*これ以降は必要ないというかもう見るのも面倒なので省略*/
}
ところで、 Excel でデータやり取りしようなんて考えたのは誰なんだぜ?