2012/09/25 更新
「FastCSV」は、プラグイン管理されていますが、実質ヘルパーです。一般的なCSVヘルパーとしてダウンロード(エクスポート)を実装しています。
また「fastExport」という、テーブル1つをまるまるCSVファイルにしちゃうメソッドも実装しました。
インストール・初期設定
- ダウンロードしたFastCSVフォルダをPluginフォルダに設置します。
- app/Config/bootstrap.php にて以下の記述を行う。
- CakePlugin::load('FastCSV');
- 目的のコントローラにて以下の記述を行う。
- public $helpers = array('FastCSV.FastCSV');
fastExport機能について
CakePHPを使っていれば、findで抽出したデータをそのままCSVにしたいはずです。
以下のコードはusersテーブルの内容をそのままCSVファイルとしてエクスポートします。
・コントローラ
App::uses('AppController', 'Controller'); class CsvController extends AppController { public $name = 'Csv'; public $uses = array('User'); public $helpers = array('FastCSV.FastCSV'); public $layout = false; public function download() { $this->User->recursive = 0; //1つのCSVにつき、モデルは1つです。 $users = $this->User->find('all'); //表は二次元であるため、"all"で取得します。 $this->set('users', $users); //ビューにセットします。 } }
・ビュー
echo $this->FastCSV->fastExport($users, 'ユーザー表', 'User');
コードはたったこれだけで、「csv/download」からダウンロード可能です。
それでは今回使用した「fastExport機能」について詳しく解説していきます。
- 説明
- array fastExport ( array $table [, string $filename = null [, mixed $modelClass = false]] )
- パラメータ
一般的なCSVヘルパー機能の利用
設定をカスタマイズしたい場合や、CakePHPのfindを利用していない場合など有効です。
・コントローラ
アクションは空です。
・ビュー
$fruits = array( array('いちご', '赤', 6), array('ぶどう', '紫', 4), array('ばなな', '黄', 20), ); $add_fruit = array('りんご', '赤', 13); $thead = array('名前', '色', '大きさ'); $thoot = array('name', 'color', 'length',); //設定 $this->FastCSV->filename = 'フルーツ表'; $this->FastCSV->delimiter = ','; $this->FastCSV->enclosure = '"'; $this->FastCSV->to_encoding = 'sjis'; $this->FastCSV->from_encoding = 'utf8'; //表をセット $this->FastCSV->setRows($fruits); $this->FastCSV->setRow($add_fruit); $this->FastCSV->setLastRow($thoot); $this->FastCSV->setFirstRow($thead); //エクスポート $this->FastCSV->export();
上記は従来のよくあるCSVヘルパーの動作ですね。この辺のメソッドについてはソースを読んでもらえれば助かります。コメントもちゃんと書いてますので。笑
なにか要望やアドバイスがあれば機能追加します。