PHPで配列データをCSVとしてダウンロードさせる方法
2024/04/17
PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファイルを都度生成していくと容量が圧迫されそう。また、権限の問題でAさんは全てCSV化できるけど、Bさんは制限付のものしかCSV化できないというケースで、ファイルを生成してしまうとURLを直で叩かれた場合にどうなるのか怖かった。
探してみると配列をCSVとしてダウンロードさせる方法があった。
ソースコード
<? /* 権限チェック等の処理を入れる アウトの場合はexit();とかで終わらせる。 */ $csvDate = ''; //CSVデータ用 $csvDate .= 'コード,名前,得点 ';//1行目はタイトルとか入れる。あと文末に改行入れる。\nとかでも良いと思う。 foreach( $array as $key => $val ){ /* この辺で適当にCSVデータを突っ込んでいく。カンマ区切りと文末改行必要。 */ } mb_convert_variables('SJIS', 'UTF-8', $csvDate); $fileName = "hoge_" . date("YmdHis") . ".csv"; header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $fileName); echo $csvDate; //出力
例えば上記を記述したcsv.phpというファイルを作成し、他のページからリンクを貼るとCSVをダウンロードしてくれる。
CSVファイル自体は生成されないので、容量とかは問題なし。
クエリをつけたり、cookieとかで権限情報を保持している場合はソース上部のところで処理する。
ただ単にCSVファイルを生成するだけなら以下の過去記事参照。
関連記事
-
PHPで改行を含むデータをCSV化する際に表示崩れを防ぐ方法
PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...
-
PHPでCSVファイル出力用の関数
ここのところログ系をCSVファイル出力にするケースが多かった為、使いまわせるよう ...
-
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...
-
PHPからCSVファイルを出力する際にメモリを節約する方法
MySQLよりデータを大量に取り出してCSVファイル化し、ダウンロードさせるとい ...
-
フォームからCSVファイルをアップロードしてPHPの配列に格納する方法
formからcsvファイルをアップロードさせて、PHPで色々処理したかった。とり ...