PHP
PHPExcel

PHPExcelでエクセルファイルを出力したい

More than 3 years have passed since last update.

データベースからデータを取得してそれをエクセルでダウンロードさせたい場合ってあると思います。

その時にデータベースから取得する処理ってクラス化されてて一旦配列なりに入れて処理するんですよね。

それが巨大なデータだった場合SQL側でLIMITで制限して小出しにして処理しなくちゃいけない、、、。

$obj = PHPExcel_IOFactory::createReader('Excel2007');

$book = $obj->load('hoge.xlsx');
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('sheet1');
$writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");

header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: inline;filename='hogehoge.xlsx'");

$sql = <<<SQL
SELECT COUNT(id) AS CNT FROM hoge;
SQL;

件数取得処理..$countに入れる

$page = ceil($count / 1000);
for($i=0; $i<$page; $i++) {
$start = $i * 1000;
$sql =<<<SQL
SELECT id FROM hoge LIMIT {$start},1000
SQL;

データ取得処理..
エクセルにデータを入れる処理..

$writer->save('php://output');
}

このように繰り返しの中でsaveメソッドを実行すると最初のループのデータしか表示されず、、、

なんかいい方法ないものか、、、