PHP导出MySQL数据到Excel文件(fputcsv)


Posted in PHP onJuly 03, 2011

这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。

// 输出Excel文件头,可把user.csv换成你要的文件名 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="user.csv"'); 
header('Cache-Control: max-age=0'); // 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可 
$sql = 'select * from tbl where ……'; 
$stmt = $db->query($sql); 
// 打开PHP文件句柄,php://output 表示直接输出到浏览器 
$fp = fopen('php://output', 'a'); 
// 输出Excel列名信息 
$head = array('姓名', '性别', '年龄', 'Email', '电话', '……'); 
foreach ($head as $i => $v) { 
// CSV的Excel支持GBK编码,一定要转换,否则乱码 
$head[$i] = iconv('utf-8', 'gbk', $v); 
} 
// 将数据通过fputcsv写到文件句柄 
fputcsv($fp, $head); 
// 计数器 
$cnt = 0; 
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 
$limit = 100000; 
// 逐行取出数据,不浪费内存 
while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) { 
$cnt ++; 
if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 
ob_flush(); 
flush(); 
$cnt = 0; 
} 
foreach ($row as $i => $v) { 
$row[$i] = iconv('utf-8', 'gbk', $v); 
} 
fputcsv($fp, $row); 
}

优点简单易用,非常节省内存,不依赖第三方类库。
PHP 相关文章推荐
PHP利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP之数组学习
May 29 PHP
php实现httpclient类示例
Apr 08 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
简单谈谈favicon
Jun 10 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
Smarty3配置及入门语法
Feb 22 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
PHP include_path设置技巧分享
Jul 03 #PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 #PHP
php header Content-Type类型小结
Jul 03 #PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 #PHP
PHP采集利器 Snoopy 试用心得
Jul 03 #PHP
php中的三元运算符使用说明
Jul 03 #PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 #PHP
You might like
用PHP制作的意见反馈表源码
2007/03/11 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
javascript代码优化的8点总结
2018/01/29 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
python发腾讯微博代码分享
2014/01/10 Python
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
使用C++扩展Python的功能详解
2018/01/12 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
中学教师请假制度
2014/02/03 职场文书
财务整改报告范文
2014/11/05 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python