2009-05-07
PHPExcel xlsファイルのデータを読み込む
前回はファイル出力を試しましたが、今回は逆にファイルからデータの読み込みをしてみます。CSVのような単純な構造のシートを想定したとき、その中の各セルの値を繰り返し処理で取得するにはどうするか、です。
同梱されているサンプルの「Test/28iterator.php」を参考にして書いてみました。
<?php //ライブラリのインクルード set_include_path(get_include_path() . PATH_SEPARATOR . './PHPExcel/Classes/'); include 'PHPExcel.php'; include 'PHPExcel/IOFactory.php'; //ファイルを読み込んでインスタンス化 (※Excel2003以前の形式) $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objPHPExcel = $objReader->load('test.xls'); //アクティブなシートを変数に格納 $objPHPExcel->setActiveSheetIndex(0); $worksheet = $objPHPExcel->getActiveSheet(); $list = array(); //行でループ foreach ($worksheet->getRowIterator() as $row) { //ヘッダが2行分あったとして、それを飛ばす処理 if ($row->getRowIndex() < 3) { continue; } $data = array(); //列でループ foreach ($row->getCellIterator() as $cell) { if (!is_null($cell)) { $data[] = $cell->getValue(); } } $list[] = $data; } var_dump($list);
こんな感じで、各セルの値が格納された二次元配列な$listができます。
留意点
- 列のループの最後で$cellはnullとなってforeachの中をまわる
- そのため!is_null()の判定が必要になってくる
- 判定をしていないとgetValue()で落ちる
- 値のないセルをgetValue()すると、NULLが返る
- setIterateOnlyExistingCells()
【追記】
$data[] = $cell->getValue();
ここのところ、値が取れずによくわからないオブジェクトが取れてしまう現象に出くわしました。対象のセルの値が半角英数のみのときに発生しました。
$data[] = (string) $cell->getValue();
そこで、このように書いたら値(文字列)として取ることができました。
トラックバック - http://d.hatena.ne.jp/deeeki/20090507/phpexceliterator
リンク元
- 380 http://www.google.co.jp/search?hl=ja&source=hp&q=php+excel+読み込み&lr=&aq=1&oq=php+excel
- 274 http://www.google.co.jp/search?q=PHPExcel+読み込み&btnG=検索&hl=ja&rlz=1B3GGGL_jaJP238JP239&sa=2
- 264 http://www.google.co.jp/search?hl=ja&q=php+excel+読み込み&lr=
- 237 http://www.google.co.jp/search?hl=ja&q=phpexcel+読み込み&lr=&aq=3&oq=phpexcel+
- 234 http://www.google.co.jp/search?q=php+excel+読み込み&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 208 http://www.google.co.jp/url?sa=t&rct=j&q=php excel 読み込み&source=web&cd=2&ved=0CDYQFjAB&url=http://d.hatena.ne.jp/deeeki/20090507/phpexceliterator&ei=We6fTvq0L7DJmAXpkfXgBA&usg=AFQjCNHEbb_E1LZ3GiTc9_oCjSDF0gJJ
- 192 http://www.google.co.jp/url?sa=t&rct=j&q=phpexcel 読み込み&source=web&cd=1&sqi=2&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/deeeki/20090507/phpexceliterator&ei=qjqETtKcGO6hmQXrl5Qg&usg=AFQjCNHEbb_E1LZ3GiTc9_oCjSDF0gJ
- 154 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/deeeki/20090507/phpexceliterator&ei=9Hw4T6TwCsOMmQXt9ICCAg&usg=AFQjCNHEbb_E1LZ3GiTc9_oCjSDF0gJJYw
- 139 http://www.google.co.jp/search?hl=ja&source=hp&q=phpexcel+読み込み&lr=lang_ja&aq=3&oq=PHPExcel+
- 136 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=u8j&q=xlsファイル&btnG=検索&lr=lang_ja



