PHPプログラムでCSVファイルをダウンロードする

スポンサーリンク
Webプログラミング

当社の簡易IoTシステムでは、Webブラウザで、機械の稼働履歴(表示灯の点灯履歴)を確認することができます。

このうち、数ヶ月以上も前の情報については、Webブラウザで確認するより、Excelに保存しておいて、パソコン上でファイルとして管理するほうが便利ではないか?と思います。
そのため、Webページから稼働履歴情報のCSVファイルを書き出すPHPプログラムを作ることにしました。

CSVファイルを書き出すプログラムは、稼働履歴を表示するプログラムと、ほぼ内容は同じで、基本的には、出力の書式を「HTMLのテーブル書式」から「カンマ区切り」に変えるだけです。
また、稼働履歴を表示するプログラムでは、出力結果をHTMLで表示させるのですが、CSVを書き出すプログラムでは、ファイルをダウンロードするようにします。
PHPでは、以下の処理だけで、ファイルをダウンロードできます。

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $fileName);
echo $res;

これで、「$res」変数に格納されている内容が、そのままファイルとしてダウンロードできます。

稼働履歴を表示するプログラムには「CSVをダウンロード」というボタンを付けて、この新しく作ったプログラムをキックできるようにしました。

次に、このCSVファイルを取り込むためのExcelのテンプレートを作りました。

  • 「条件付き書式」を使って、セルの値が「red」の時に、セル色が赤になるようにしました(他の色も同様)。
  • 「セルの書式設定」の「ユーザー定義」を使って、「red」などの文字が表示されないようにしました。これで、表のエリアには色だけが表示され、文字は見えなくなります。
  • CSVで情報を取り込んだエリアの右横に、稼働履歴を集計する表を追加しました。これで、日次の稼働率がわかるようになります。
  • 「シートの保護」を使って、せっかく作った書式を編集できないようにしました。CSVを貼り付ける予定のエリアを選択し、「セル」→「書式」→「セルのロック」をOFFにした上で、「シートの保護」でOKをクリックします。これで、CSVを貼り付けるエリアは、書式のみ変更不可、その他は、値も含めて変更不可になりました。
  • 今回作ったテンプレートでは、一部のエリアで、セルを結合しています。結合セルが含まれるテンプレートにCSVを貼り付けるには、「形式を選択して貼り付け」→「数式」を指定して、貼り付けを行います。

これで、稼働履歴の情報をExcelに貼り付け、パソコン上のファイルとして利用できるようになりました。