导出Cgridview(使用自定义列)到Excel

时间:2014-06-13 02:05:45

标签: php yii

我有一个CGridView,它使用Active Records以及模型中定义的函数,以使其成为自定义列。这对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扩展程序可以支持此功能,请告诉我们。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想使用EExcelView扩展程序执行此操作并且这不起作用,那么您应该向此扩展程序的作者询问可能出错的内容。

但是,我认为不需要使用此扩展名或任何其他扩展名。

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

接下来是以.csv格式编写它(即 - 带有换行符的单独行和带逗号或制表符的单元格),将这样的数据写为文件,然后......就完成了。如果只是正确编写,Excel可以毫无问题地导入.csv文件。