2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-12

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

その時にデータベースから取得する処理ってクラス化されてて一旦配列なりに入れて処理するんですよね。
それが巨大なデータだった場合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メソッドを実行すると最初のループのデータしか表示されず、、、
なんかいい方法ないものか、、、

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?