Yii eXcelView的数据提供程序
假设我有一个名为Yii eXcelView的数据提供程序,yii,phpexcel,yii-extensions,yii-events,Yii,Phpexcel,Yii Extensions,Yii Events,假设我有一个名为 cars{ 'id','name','brand_id', } 还有一张桌子 brand{ 'id','brand_name', } 我想生成一个具有以下属性的Excel报告。 'name'、'brand\u name'即从汽车内部连接中选择cars.name、brand.brand\u name,其中cars.brand\u id=brand.id 因此,我创建了一个数据提供程序,如下所示: $sql = "SELECT cars.name, brand.brand_n
cars{
'id','name','brand_id',
}
还有一张桌子
brand{
'id','brand_name',
}
我想生成一个具有以下属性的Excel报告。
'name'、'brand\u name'
即从汽车内部连接中选择cars.name、brand.brand\u name,其中cars.brand\u 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文件,其结果为数据提供程序
,因此我编写了以下代码:
//假设我在名为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();
我已经包含了我必须包含的所有扩展。。当我向数据提供者
字段输入一个单表条目时,该代码正在工作。
但是当我包含多个表时,就会出现这种情况,这些行实际上并不构成数据提供者:
$result = Yii::app()->db->createCommand($sql)->queryAll();
$this->render('doc', array('dataprovider' => $result));
您将需要执行以下操作:
$dataprovider = new CSqlDataProvider($sql, array(
'pagination'=>false,
);
$this->render('doc', array('dataprovider' => $dataprover);
更多信息请点击此处:这适用于2张表格,不知道是否适用于2张以上的表格
$dataProvider = new CArrayDataProvider($dataprovider, array('id' => 'brand', 'sort' => array('attributes' => array('brand_name', ), ), 'pagination' => false));
$this -> render('doc', array('dataprovider' => $dataProvider,));
你知道为什么我只得到10个值吗?i、 e dataprovider只反映10个数据。dataprovider的默认设置是每10页分页一次。我的答案是,我更新了如何禁用分页。我大概有320行和60列。。分页不适用于那些巨大的。。它可以在有限的数据表中正常工作。。?有什么解决办法吗?你能提出一个新的问题吗?你认为你需要把你的数据分块处理,也许能得到其他人的支持thoughts@TNC不要改变自己给你的答案。如果你认为某些东西应该改变,请在评论中解释,答案的作者会改变它。