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中使用Oracle数据库(4)
Oct 09 PHP
php 信息采集程序代码
Mar 17 PHP
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
php json_encode奇怪问题说明
Sep 27 PHP
PHP 第一节 php简介
Apr 28 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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 函数学习简单小结
2010/07/08 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
JS实现拼图游戏
2021/01/29 Javascript
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python如何实现单链表的反转
2020/02/10 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
通用C#笔试题附答案
2016/11/26 面试题
小小的船教学反思
2014/02/21 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
责任书格式
2015/01/29 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
宣传委员竞选稿
2015/11/19 职场文书
调研报告的主要写法
2019/04/18 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL