【PHP】CSV ファイルをダウンロードするプログラムは?

php

phpでCSVをダウンロードする時って割と見ると思うんですが、そういえばphpでCSVをダウンロードする方法を割りと知らなかったりするのでメモ。

今回、試したのがあるサイトのAPIを利用してjsonファイルからCSVファイルを作成してそれをダウンロードするという流れです。

この方法に関しては、まぁ割と一般的というは誰が書いても同じだと思うので詳しい説明は省いて書いておきます。

CSVをダウンロードするphpファイル

CSVファイルをダウンロードするプログラムのコードを載せます。
下記のような記述をする事で、プログラムで開くかダウンロードして保存するかのダイアログが標示させる仕組みとなる。*ただしGoogle Chromeだとそのままダウンロードされてしまう。

上記のファイルをdownload.phpというファイルで作りました。*名前は任意

実際にCSVファイルを作成してダウンロードするまでの流れ

実際に自分がCSVファイルを作成して、ダウンロードするまでのファイルを載せておきます。とりあえずCSVファイルが無いと話にならないので、サーバー上に「sample.csv」というファイルを準備しておきます。

準備したファイルは下記のファイルです。

index.php jsonファイルからCSVを作るファイル
download.php ダイアログを表示してCSVファイルをダウンロードするためのファイル
sample.csv CSVファイル

CSVファイルを作成するファイル

CSVをとあるサイトのAPIからCSVを作成するindex.phpの内容です。今回はCSVファイルをダウンロードするのが目的なので、CSV作成に関してはあくまでダミーです。

ざっくり説明するとjsonファイルからデータを取得して、foreach文でデータを取り出しCSVファイルを作成しています。

その後に、予め用意しておいたsample.csvファイルをfopenで開き今回は上書きする為一旦ファイルを全部空の状態にしてデータをCSVファイルに書き込んでいく。という流れです。あとはindex.php内でdownload.phpへのリンクを張ればいいです。

で、最初に記載したCSVをダウンロードする為のdownload.phpファイルをそのままコピペして(CSVのファイル名は任意)ファイルを用意すればオッケーです。