PHPでCSVを文字コードShift-JISに変換してダウンロード出力する方法。
クライアントから出力してそのままダブルクリックでExcelで開きたいということで、
いろいろと調べたところ、結局これでうまく動きました。
自分でCSVフォーマットにテキストを変換する方法もあるけれど、
信頼できそうな
fputcsv()
を使って出力しました。
サイトのよってはうまく動かない解説もあったりしたので、
最終的に上手く動いたコードを備忘に掲載。
/* CSVダウンロード */ header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename={$file_name}"); header('Content-Transfer-Encoding: binary'); // アウトプットストリームを取得 $fp = fopen('php://output', 'w'); // 文字コードをShiftJISに変換するフィルター stream_filter_prepend($fp, 'convert.iconv.utf-8/cp932'); fputcsv($fp, $labels, ',', '"'); foreach ($data as $row) { fputcsv($fp, $row, ',', '"'); } fclose($fp);
同じように悩んだ方はぜひ使ってください。
他の記事を検索: