PHPExcelでの書き込みはfromArrayメソッドが便利
PHPExcelのループ書き込みはあまり好きじゃない
たいした話じゃないけれど。
PHPには PHPExcel というライブラリがある。
読んで字のごとくPHPでExcelを作れる便利なライブラリ。
値を入力する場合、たいていループで入力していきます。
DBから値セットを取得してforeachで回すというのが定石でしょう。
<?php $excel = new PHPExcel; $sheet = $excel->getActiveSheet(); $sheet->setTitle('ジョジョシート'); $data_set = array( array('id' => 1, 'name' => 'ジョナサン', 'stand' => null), array('id' => 2, 'name' => 'ジョセフ', 'stand' => 'ハーミット・パープル'), array('id' => 3, 'name' => '空条承太郎', 'stand' => 'スター・プラチナ'), array('id' => 4, 'name' => '東方仗助', 'stand' => 'クレイジー・ダイヤモンド'), array('id' => 5, 'name' => 'ジョルノ', 'stand' => 'ゴールド・エクスペリエンス'), array('id' => 6, 'name' => '空条徐倫', 'stand' => 'ストーン・フリー'), array('id' => 7, 'name' => 'ジョニィ', 'stand' => 'タスク'), array('id' => 8, 'name' => '東方定助', 'stand' => 'ソフト&ウェット') ); $row = 1; foreach ($data_set as $data) { $col = 0; foreach ($data as $value) { $sheet->setCellValueByColumnAndRow($col++, $row, $value); } $row++; } $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel5'); $writer->save('/tmp/jojo.xls');
このように。
setCellValueByColumnAndRowメソッドでセルに値を書き込んでいく。
第一引数が列数、第二引数に行数、第三引数に書き込みたい文字列を指定する。
しかし、foreachが入れ子になって個人的にあまり好きじゃない。
そこでfromArrayメソッドですよ
fromArrayというセル書き込みメソッドがあるのでそれを使えば一発で済む。
<?php $sheet->fromArray($data_set, null, 'A1');
これだけ!簡単!
foreachいらない!
第一引数にデータセットの配列を、第二引数はなんだか知らん、第三引数はデータを入力しはじめるセル名を指定する。
前者とくらべてセル名の指定になるため、拡張性が低下するのが難点かな。
setCellValueByColumnAndRowについて書いてるブログはあってもfromArrayを書いてるのは見つからなかったので書き記しておく。
Enjoy!