本文实例讲述了Yii框架扩展CGridView增加导出CSV功能的方法。分享给大家供大家参考,具体如下:

Yii提供的CGridView组件没有内置数据导出功能,不过我们可以通过扩展该组件来添加该功能。
具体方法如下:
1、首先派生一个子类,添加一个action成员,在该视图的init函数中判断是浏览动作还是数据导出动作,如果是浏览动作者则保持默认行为,否则输出csv文件。
public function init()
{
if($this->action == 'export')
{
parent::init();
$this->genCsv();
}
else
{
parent::init();
}
}
2、处理csv文件的输出:
protected function genCsv()
{
header("Content-Type: text/csv; charset=GB2312");
header('Content-Disposition: attachment; filename="'.$this->fileName.'"');
//add your content dump codes here
flush();
}
3、然后在表格控件界面上添加一个csv导出按钮
覆盖其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','Export to CSV').'" src="'.Yii::app()->theme->BaseUrl.'/images/ico-csv.png" alt="Submit">';
echo '</form>';
echo '</div>';
}
parent::renderItems();
}
4、然后在点击CSV的动作处理比如actionCsv()中render单个表格视图,模板如下
<?php
$this->widget('application.extensions.grid.MyGridView', array(
'id'=>'grid',
'action'=>'export',
'dataProvider'=>$dp,
'columns'=>array(
array(
'header'=>Yii::t('Statistics','Phone'),
'name'=>'phone',
),
array(
'header'=>Yii::t('Statistics','Count'),
'name'=>'count',
),
)
));?>
注意上述第2步csv输出函数中的header设置语句之前不要有任何的输出,包括如下函数:
print, echo, printf, trigger_error, vprintf, ob_flush, var_dump, readfile, passthru
否则内容只会在浏览器中输出,但不会出现文件下载。
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
# Yii
# 扩展
# CGridView
# 增加
# 导出
# CSV
# Yii中使用PHPExcel导出Excel的方法
# Yii2框架中使用PHPExcel导出Excel文件的示例
# Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
# Yii Framework框架使用PHPExcel组件的方法示例
# YII2框架中excel表格导出的方法详解
# Yii安装与使用Excel扩展的方法
# Yii2使用自带的UploadedFile实现的文件上传
# Yii配置文件用法详解
# Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
# Yii2实现UploadedFile上传文件示例
# YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
# Yii框架中使用PHPExcel的方法分析
# 程序设计
# 方法如下
# 相关内容
# 子类
# 会在
# 感兴趣
# 我们可以
# 给大家
# 更多关于
# 所述
# 面向对象
# 有任何
# 操作技巧
# 器中
# 讲述了
# code
# dump
# br
# codes
# flush
相关文章:
家庭服务器如何搭建个人网站?
建站主机是否等同于虚拟主机?
怀化网站制作公司,怀化新生儿上户网上办理流程?
定制建站策划方案_专业建站与网站建设方案一站式指南
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何在新浪SAE免费搭建个人博客?
如何通过FTP服务器快速搭建网站?
济南企业网站制作公司,济南社保单位网上缴费步骤?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
名字制作网站免费,所有小说网站的名字?
如何续费美橙建站之星域名及服务?
内网网站制作软件,内网的网站如何发布到外网?
如何快速搭建虚拟主机网站?新手必看指南
建站之星安装需要哪些步骤及注意事项?
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站之星如何防范黑客攻击与数据泄露?
Swift中循环语句中的转移语句 break 和 continue
网站制作难吗安全吗,做一个网站需要多久时间?
如何正确选择百度移动适配建站域名?
如何通过远程VPS快速搭建个人网站?
如何快速生成ASP一键建站模板并优化安全性?
如何选择适合PHP云建站的开源框架?
,怎么用自己头像做动态表情包?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
C#如何在一个XML文件中查找并替换文本内容
如何选择CMS系统实现快速建站与SEO优化?
微信小程序 五星评分(包括半颗星评分)实例代码
寿县云建站:智能SEO优化与多行业模板快速上线指南
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站主机与服务器功能差异如何区分?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何用免费手机建站系统零基础打造专业网站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
存储型VPS适合搭建中小型网站吗?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
实例解析angularjs的filter过滤器
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
宝塔建站后网页无法访问如何解决?
网站企业制作流程,用什么语言做企业网站比较好?
建站之星安装步骤有哪些常见问题?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何快速查询网址的建站时间与历史轨迹?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
*请认真填写需求信息,我们会在24小时内与您取得联系。