首页 > PHP教程 > php开发知识文章

PHP -- Yii框架扩展CGridView添加导出excel/csv文件功能

本文主要介绍了PHP -- Yii框架扩展CGridView添加导出excel/csv文件功能的方法,结合具体实例代码详细的分析了Yii框架扩展组件实现导出excel文件的具体步骤。

Yii扩展提供的CGridView组件没有数据导出文件功能,需要我们修改该组件来添加这个功能。

方法如下:

1、在视图的init函数中判断控制器是浏览动作还是数据导出文件动作,如果是浏览动作则保持默认行为,否则输出excel文件。

public function init()
{
if ($this->action == 'export') {
parent::init();
$this->genExcel();
} else {
parent::init();
}
}

2、输出文件下载响应头:

protected function genExcel()
{
header("Content-Type: application/octet-stream; charset=UTF-8");
header('Content-Disposition: attachment; filename="' . $this->fileName . '"');
//这里写输出文件二进制数据的代码
flush();
}

3、在表格控件上添加一个excel导出按钮

修改renderItems()方法如下:

public function renderItems()
{
if (Yii::app()->user->checkAccess('administrator')) {
echo '<div class="toolBar">';
echo '<form action="' . CHtml::normalizeUrl(array($this->action)) . '&id=' . $this->id . '" method="post">';
foreach ($this->getController()->getActionParams() as $name => $value) {
echo '<input type="hidden" name="' . addcslashes($name, '"') . '" value="' . addcslashes($value, '"') . '" />';
}
echo '<input type="image" title="' . Yii::t('ifCMS', '导出EXCEL') . '" src="' . Yii::app()->theme->BaseUrl . '/images/ico-excel.png" alt="提交">';
echo '</form>';
echo '</div>';
}
parent::renderItems();
}

上述第2步excel输出函数中的header设置语句之前不要有任何的输出,包括如下函数:

print, echo, printf, trigger_error, vprintf, ob_flush, var_dump, readfile, passthru

否则内容只会在浏览器中输出,不会出现文件下载。

PHP -- Yii框架扩展CGridView添加导出excel/csv文件功能

以上就是本文PHP -- Yii框架扩展CGridView添加导出excel/csv文件功能的全部内容了,希望对大家的PHP程序设计有所帮助。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。