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 编写安全的代码时容易犯的错误小结
May 20 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
Jul 04 PHP
PHP中使用json数据格式定义字面量对象的方法
Aug 20 PHP
php 使用file_get_contents读取大文件的方法
Nov 13 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
php递归遍历删除文件的方法
Apr 17 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php2html php生成静态页函数
2008/12/08 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
javascript 类型判断代码分析
2010/03/28 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
javascript中call()、apply()的区别
2019/03/21 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
深入理解python函数递归和生成器
2016/06/06 Python
python实现简单登陆系统
2018/10/18 Python
Python中修改字符串的四种方法
2018/11/02 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
实习生个人的自我评价
2013/12/08 职场文书
大四本科生的自我评价
2013/12/30 职场文书
大班开学家长寄语
2014/04/04 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
感恩主题班会教案
2015/08/12 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
pycharm debug 断点调试心得分享
2021/04/16 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis