LoginSignup
21
24

More than 5 years have passed since last update.

PHPでCSVファイルを出力する時のメモ

Last updated at Posted at 2014-09-08

PHPでCSVファイルににデータをダウンロードする場合、
下記のソースコードを使いました。

【説明】

1. PHPファイルのエンコーディング: EUC-JP(適切に変更してください)

目的:$data_arrayのデータのエンコーディング と タイトルのエンコーディングを EUC-JPにするため。

2. Excelで文字化けしないように、SJISに変更する必要があります。

echo mb_convert_encoding($str,"SJIS","EUC-JP");

3. 数字の場合、Excelで勝手に変な数字に変換されないように

="数字" の形式で出力しましょう。
※変な数字:数字は大きすぎる場合、科学表記になってしまう等

4. 出力データにコンマ(,), 改行コードも入っている場合、

ダブルクォーテーション(")でデータを囲んで出力する。 例) "データ1", "データ2", "データ3"....


$now = date("Ymd_His");
mb_http_output("EUC-JP");

header("Content-Type: application/octet-stream");
header("Content-disposition: attachment; filename=filename_".$now.".csv");
$str = "カラム1, カラム2, カラム3, カラム4\n";
foreach ($data_array as $row) {
    $str .= "\"".$row[1]."\",";
    $str .= "\"".$row[2]."\",";
    $str .= "\"".$row[3]."\",";
    $str .= "=\"".$row[4]."\","; // 数字はExcelで綺麗に表示されるように ="数字" の形に出力する
    $str .= "\n";
}
echo mb_convert_encoding($str,"SJIS","EUC-JP");
exit;
21
24
2

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
21
24