我有一个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扩展程序可以支持此功能,请告诉我们。
谢谢。
答案 0 :(得分:0)
如果您想使用EExcelView
扩展程序执行此操作并且这不起作用,那么您应该向此扩展程序的作者询问可能出错的内容。
但是,我认为不需要使用此扩展名或任何其他扩展名。
如果您在网格视图中显示数据,则可能使用CActiveDataProvider
(如演示应用程序中)提供数据。只需更改它(在另一个操作中 - 即在操作中,您将用于将数据导出到Excel,而不是用于渲染网格视图的操作)以使用CArrayDataProvider
。它将从数据库中获取您的数据,并将其作为数组提供给您。然后,您可以使用简单的foreach
迭代解析此数组,并且您可以访问每一行,每列和单元格。
接下来是以.csv
格式编写它(即 - 带有换行符的单独行和带逗号或制表符的单元格),将这样的数据写为文件,然后......就完成了。如果只是正确编写,Excel可以毫无问题地导入.csv
文件。