导出Cgridview(自定义列)到Excel


Export Cgridview (With Custom Columns) To Excel

我有一个CGridView,它使用活动记录以及在模型中定义的函数,以便使其成为自定义列。这对于CGridView来说是完美的。

但是我想把同样的数据导出到excel表格。

我已经尝试过ExcelView,但它似乎不支持下面的代码。

$data->getCallActions()似乎没有被调用。

EExcelView代码:

$this->widget('ext.eexcelview.EExcelView', array(
            'dataProvider'=> $dataProvider,
            'title'=>'Title',
            'autoWidth'=>false,
            'disablePaging'=>true,          
            'columns' => array(
                                    'id',
                                    'caller_number',
                                    array(
                                            'name'=>'Action',
                                            'type'=>'raw',
                                            'value'=>'$data->getCallActions()',
                                    ),
                                    'created_date',
                            )               
                    )
            );

请让我知道是否有任何其他excel扩展可以支持此功能。

谢谢。

如果你想用EExcelView扩展这样做,这是不工作的,那么你宁愿问这个扩展的作者什么可能是错误的。

然而,我不认为使用这个或任何其他扩展是必要的。

如果您在网格视图中显示数据,那么您可能使用CActiveDataProvider(如在演示应用程序中)提供它。简单地改变它(在另一个动作-即在行动中,你将使用导出数据到Excel,而不是一个你用来渲染网格视图)使用CArrayDataProvider。它将从数据库中获取数据,并将其作为数组提供给您。然后,您可以使用简单的foreach迭代解析该数组,并且可以访问每一行,列和单元格。

接下来将以.csv格式编写它(即——用换行符分隔行,用逗号或制表符分隔单元格),将这样的数据写入文件和…你就完成了。如果输入正确,Excel可以导入.csv文件,没有任何问题。