【PHP】CSVを出力する
DB上のデータをExcelに吐き出したいような場合。
Excel側にODBCドライバを組み込み読みこむようにすることもできるけど、諸事情によりできないような場合。
CSVで吐き出し、Excelにコピペをしてもらうことにしよう。
まずは配列の作成。
$csvarray = array($space, $yobiclass, $space, $studentname, $studentkana, $space, $schoolname, $telno, $space, $zipcode, $address.$address2, $space, $space, $paydate, $space, $space, "1");
次に、メモリ上のテンポラリ領域に作成。自動的に一時ファイルは削除させる。fputcsvは、データ区切りを自動的に付与する。
//メモリ上のテンポラリ領域に出力 $fp = fopen('php://temp', 'r+b'); fputcsv($fp, $csvarray);
データをダウンロードさせるためのheader出力
header('Content-Type: text/csv'); header("Content-Disposition: attachment; filename=" . $studentname . ".csv");
一時ファイルから読み込み、文字コードを変換しながら書き込む。SJISでなくてSJIS-win。
ExcelはUTF-8を読み込むと文字化けしてしまうので。
//ファイルポインタを先頭へ rewind($fp); //リソースを読み込み文字列取得 $csv = stream_get_contents($fp); //CSVをエクセルで開くことを想定して文字コードをSJIS-winSJISへ $csv = mb_convert_encoding($csv,'SJIS-win','utf8'); print $csv; fclose($fp);