YiiでPHPExcelを使ってデータを書き出す方法

まず、PHPExcelのページから最新のPHPExcelライブラリをダウンロードし、protected/extensions/phpexcel/以下に展開します。また、Yiiのエクステンションとしてeexcelviewも同様に取得してprotected/extensions/EExcelView/以下に展開します。

この際、EExcelViewでは、PHPExcelのパスとしてapplication.extensions.phpexcel.Classes.PHPExcelがハードコードされているため、PHPExcel.phpファイルがprotected/extensions/phpexcel/Classes/以下にないとうまく動作しないので注意が必要です。

 

使い方は、コントローラのアクションで

public function actionHoge()
{
  $model=new ExportData();
  $this->renderPartial('hoge',array(
      'model'=>$model,
  ));
}

のように書きだしたいデータのモデルを渡す。ビューでは、

<?php $this->widget('ext.EExcelView.EExcelView', array(
    'dataProvider'=>$model->search(),
    'grid_mode'=>'export',
    'title'=>'タイトル',
    'filename'=>'hoge_data',
    'exportType'=>'Excel2007',
    'columns'=>array(
        'name',
        'name_kana',
        'tel',
        'email',
        'zip',
        'address',
        'created',
        'modified',
    ),
));?>

のように書けばOKです。

なお、
titleに書き出すファイルのタイトル、
filenameに書き出すファイルのファイル名、
exportTypeは書きだすファイルのタイプ、
columnsに書き出したいフィールドを指定します。

exportTypeにはExcel5やCSV、HTMLなども指定できるので用途に応じて書き出すファイルの形式を変更できます。

※注意
ActiveRecordを利用しているので、書き出すデータ数が多いとメモリが足りないような事態が起こる可能性があります。
このような場合、データを一括して取り出さず、分割して取り出すようにするとか、あるいは、ActiveRecordを使わないようにするなどの修正が必要です。

投稿日:
カテゴリー: php タグ: