我有一个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
文件,没有任何问题。