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版(3)
Oct 09 PHP
php中看实例学正则表达式
Dec 25 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php实现图片添加水印功能
Feb 13 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
php利用gd库为图片添加水印
Nov 09 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
php7 新增功能实例总结
May 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微框架Dispatch简介
2014/06/12 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
js实现登录与注册界面
2017/11/01 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
如何通过python实现全排列
2020/02/11 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
python3 re返回形式总结
2020/11/20 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
村优秀党员事迹材料
2014/01/15 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电