という名前のテーブルがあるとしましょう
cars{
'id','name','brand_id',
}
そして別のテーブル
brand{
'id','brand_name',
}
次の属性を持つ
Excel レポートを生成したい状況があります。'name','brand_name'
すなわちSELECT cars.name, brand.brand_name FROM cars INNER JOIN on brand WHERE cars.brand_id = brand.id
だから私はこのようなデータプロバイダを作成しました:
$sql = "SELECT cars.name, brand.brand_name FROM cars INNER JOIN brand on cars.brand_id = brand.id";
$result = Yii::app()->db->createCommand($sql)->queryAll();
$this->render('doc', array('dataprovider' => $result));
結果としてExcelファイルを生成したいdataProvider
ので、次のコードを記述します。
// doc.php という名前のビュー ページでこれを行っているとしましょう
$factory = new CWidgetFactory();
Yii::import('ext.eexcelview.EExcelView',true);
$widget = $factory->createWidget($this,'EExcelView', array(
'dataProvider'=>$dataprovider->search(),
'grid_mode'=>'export',
'title'=>'Title',
'creator'=>'TNC',
'autoWidth'=>false,
'filename'=>'Report.xlsx',
'stream'=>false,
'disablePaging'=>false,
'exportType'=>'Excel2007',
'columns'=>array(
'name',
'brand_name',),
'showTableOnEmpty' => false,
));
$widget->init();
$widget->run();
必要なすべての拡張機能を含めました。. このコードは、dataProvider
フィールドに単一のテーブルエントリを入力したときに機能します。しかし、複数のテーブルを含めると状況が発生します。