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不要改变自己给你的答案。如果你认为某些东西应该改变,请在评论中解释,答案的作者会改变它。