PHPでCSVデータを書き出す
- January 27th, 2011
PHPでCSVデータを書き出す作業をしたのでメモしておきます。
作業手順
- カンマ区切りで横軸のセルが移動する
- 改行コードで縦軸のセルが移動する
- CSV形式のHTTPヘッダを定義して出力する
参考サイト
値を定義する
文字コードを「sjis-win」に変換する。
<?php
// CSVに出力する配列
$data_title = array('ID', '品名', '価格');
$data = array(
array('id'=>1, 'name'=>'apple', 'price'=>'100'),
array('id'=>2, 'name'=>'grape', 'price'=>'180'),
array('id'=>3, 'name'=>'orange', 'price'=>'110'),
);
// タイトル設定
$csv = "";
foreach ($data_title as $i => $value) {
$value = mb_convert_encoding($value, 'sjis-win', 'utf-8');
$csv .= ($i ? ',' : ''). $value;
}
$csv .= "\n"; // 改行コード
// コンテンツ設定
foreach ($data as $value) {
$value = mb_convert_variables('sjis-win', 'utf-8', $value);
$csv .= $value['id']. ",". $value['name']. ",". $value['price']. "\n";
}
?>
ヘッダを定義して出力する
<?php
// CSVのHTTPヘッダ
header("Content-Type: application/octet-stream; charset=sjis-win");
header("Content-Disposition: attachment; filename=hoge.csv");
echo $csv;
?>- January 27th, 2011
