Yii框架扩展CGridView增加导出CSV功能的方法
发布时间 - 2026-01-11 01:16:29 点击率:次本文实例讲述了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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何自定义分页视图?(Pagination示例)
如何做网站制作流程,*游戏网站怎么搭建?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何在云主机快速搭建网站站点?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
深圳网站制作的公司有哪些,dido官方网站?
详解jQuery中基本的动画方法
怎样使用JSON进行数据交换_它有什么限制
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何在宝塔面板中修改默认建站目录?
,怎么在广州志愿者网站注册?
Python制作简易注册登录系统
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
微信小程序 闭包写法详细介绍
如何快速打造个性化非模板自助建站?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel怎么上传文件_Laravel图片上传及存储配置
如何确认建站备案号应放置的具体位置?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
详解Oracle修改字段类型方法总结
Laravel如何实现模型的全局作用域?(Global Scope示例)
html如何与html链接_实现多个HTML页面互相链接【互相】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Java垃圾回收器的方法和原理总结
IOS倒计时设置UIButton标题title的抖动问题
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
三星、SK海力士获美批准:可向中国出口芯片制造设备
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何在阿里云服务器自主搭建网站?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何用y主机助手快速搭建网站?
高防服务器:AI智能防御DDoS攻击与数据安全保障
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】

