cakePHPでのCSVダウンロードプラグインを実装
インストール
composer.jsonに下記のように書いてcomposer updateすればOKです。
1 2 3 |
"require": { "friendsofcake/cakephp-csvview": "~3.0" }, |
プログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$data=[ ['山田','太郎','35'], ['鈴木','次郎','40'] ]; //CSVの定義です。なお変数名は任意のものはダメで_headerでないと入りません。 $_header = ['名前','氏名','年齢']; //本データを_serializeに入れます。 $_serialize = 'data'; //これいれないと文字エンコーディング変換が有効になりません $_extension = 'mbstring'; // 変換前の文字コード $_dataEncoding = 'UTF-8'; // 変換後の文字エンコーディング $_csvEncoding = 'sjis-win'; $this->response->download( 'ファイル名' . '.csv'); $this->viewBuilder()->className('CsvView.Csv'); $this->set(compact('data', '_header' '_serialize', '_extension', '_dataEncoding', '_csvEncoding')); |
注意点
- 連想配列でなく、単なる配列を組み込んでいくという点で出力方法がなかなか独特ですね。
- また他の場所で不用意に_serializeを使っているとうまく吐き出されなかったります。
参考
Exporting Data to a Downloadable CSV File with CakePHP 3 and CsvView
CakePHPのCsvView プラグインでお手軽CSV出力
CakePHP3 で CSVエクスポート機能(マルチバイト文字対応)