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 相关文章推荐
在数据量大(超过10万)的情况下
Jan 15 PHP
php知道与问问的采集插件代码
Oct 12 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
PHP工厂模式的日常使用
Mar 20 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
PHP7 弃用功能
Mar 09 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 SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP防止跨域提交表单
2013/11/01 PHP
PHP扩展开发入门教程
2015/02/26 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
JS实现放烟花效果
2020/03/10 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
django创建超级用户过程解析
2019/09/18 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
市场营销个人求职信范文
2014/02/02 职场文书
爱心活动计划书
2014/04/26 职场文书
锦旗标语大全
2014/06/23 职场文书
连锁超市项目计划书
2014/09/15 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技