LoginSignup
0
1

More than 3 years have passed since last update.

cakephp 2.xでcsvを作成しダウンロード

Posted at

仕事でcsv出力をする機会があって、その時にパッとやり方が思いつかなかったので備忘録。
もっと良いやり方があれば、教えていただけると幸いです。

コード

以下の配列がコントローラからビューに渡されている想定です。

<?php
/*
 * Controller
 */

$data = array(
  0 => array(
    'name'=>'一郎',
    'age'=>10,
  ),
  1 => array(
    'name'=>'次郎',
    'age'=>20,
  ),
  2 => array(
    'name'=>'太郎',
    'age'=>30,
  )
);
?>
<?php
/*
 * View
 */

//出力情報の設定
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=list.csv");
header("Content-Transfer-Encoding: base64");

//変数の初期化
$csv = null;

//1行目のラベル
$csv .= '"名前","年齢"' . "\n";

//出力データ
foreach($d as $data) {
  $csv .= '"' . $d['name'] . '","' . $d['age'] . '"' . "\n";    
}

//BOMを追加
$csv = "\xEF\xBB\xBF" .$csv;

//CSVファイル出力
echo $csv;
?>

気になること

小規模のデータベースから比較的少ない量のレコード(100件程度)をcsvにまとめる形だったので、このように単純にできるが、大規模だとmax_execetion_timeに引っかかるみたいな話も聞いた。
fputcsv使うのが良いのかなと思いますが...

0
1
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
0
1