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 如何向 MySQL 发送数据
Oct 09 PHP
dede全站URL静态化改造[070414更正]
Apr 17 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php递归实现无限分类的方法
Jul 28 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 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入门学习的几个不错的实例代码
2008/07/13 PHP
php 静态化实现代码
2009/03/20 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
php测试kafka项目示例
2020/02/06 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
原生js实现轮播图
2017/02/27 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
python区块及区块链的开发详解
2019/07/03 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
详解python程序中的多任务
2020/09/16 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
RealTek面试题
2016/06/28 面试题
商务考察邀请函范文
2014/01/21 职场文书
暑期研修感言
2014/02/17 职场文书
个人租房协议书范本
2014/09/30 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
2015年大学生工作总结
2015/04/21 职场文书
2016新年感言
2015/08/03 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书