数据量很大时(5万条以上),用 PHPExcel 导出 xls 将十分缓慢且占用很大内存,最终造成运行超时或内存不足。

可以通过设置 PHP 的运行时间和内存限制来阻止错误发生,但仍然不能确保导出完成。

set_time_limit(0);
ini_set("memory_limit","512M");

要彻底解决这个问题可以将数据分批导出成 CSV 格式的文件,这种格式简单导出快,并且也能用到 Excel 中。

<?php
// 不限制脚本执行时间以确保导出完成
set_time_limit(0);
// 输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="amazon_product_quantity.csv"');
header('Cache-Control: max-age=0');// 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql = 'select * from amazon_product_quantity';
$stmt = mysql_query($sql);// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');// 输出Excel列名信息
$head = array('code', 'sub_code', 'sp_code', 'quantity');
foreach ($head as $i => $v) {// CSV的Excel支持GBK编码,一定要转换,否则乱码$head[$i] = iconv('utf-8', 'gb2312', $v);
}// 将数据通过fputcsv写到文件句柄
fputcsv($fp, $head);// 计数器
$cnt = 0;
// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;// 逐行取出数据,不浪费内存
while ($row = mysql_fetch_array($stmt,MYSQL_ASSOC)) {$cnt ++;if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题ob_flush();flush();$cnt = 0;}foreach ($row as $i => $v) {$row[$i] = iconv('utf-8', 'gb2312', $v);}fputcsv($fp, $row);
}
?>

PHP 将大量数据导出到 Excel 的方法相关推荐

  1. C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)

    上次写了一个用文件流方式将Datatable导出Excel的方法,这个方法有局限性,比如没法对Excel进行一些增加列颜色等简单的操作,现在,给大家介绍另外一种方法,用微软的Excel类.既然要用到类 ...

  2. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  3. php怎么将表格导出到excel表格,php怎么将excel表格数据-php 怎么把数据导出到excel表格...

    如何使用php实现将数据从excel表导入到mysql中? /** * @param array $data //二维数组 不是对象 * @param string $filename //导件 */ ...

  4. python结果输出到excel-python实现数据导出到excel的示例--普通格式

    此文是在django框架下编写,从数据库中获取数据使用的是django-orm 用python导出数据到excel,简单到爆!(普通的excel格式) 安装xlwt pip install xlwt ...

  5. python处理大量excel数据-使用python将大量数据导出到Excel中的小技巧分享

    (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以 ...

  6. python输出数据到excel-python实现数据导出到excel的示例

    这篇文章主要介绍了关于python实现数据导出到excel的示例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 此文是在django框架下编写,从数据库中获取数据使用的是django- ...

  7. python输出数据到excel-python实现数据导出到excel的示例--普通格式

    此文是在django框架下编写,从数据库中获取数据使用的是django-orm 用python导出数据到excel,简单到爆!(普通的excel格式) 安装xlwt pip install xlwt ...

  8. python输出数据到excel-使用python将大量数据导出到Excel中的小技巧分享

    (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以 ...

  9. python输出数据到excel-如何使用python将大量数据导出到Excel中的小技巧之一

    如何使用python将大量数据导出到Excel中的小技巧 (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢 ...

最新文章

  1. python3.82版本安装_CentOS7下安装Python3和Python2并存
  2. HQL中的substring
  3. Android解决ScrollView中的滑动效果导致GestureDetector中的OnFling不能正常工作问题
  4. python自动化框架2019_【转】python3实现自动化框架robotframework
  5. 【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)
  6. geexbox 编译
  7. python实现给定一个列表和数字,在列表找到和为该数字的元素返回下标
  8. QQ文件上传不了:什么年代了,还使用简单的关键词过滤,智能一点可好
  9. 解决office 2013 新建PPT(幻灯片)为拉伸矩形问题
  10. 面试题:ES和Solr的区别是什么?
  11. 理光GR Android wifi,理光gr2wifi怎么用
  12. Three.js(十二)——骨骼动画、变形动画
  13. python去掉标点、特殊符号_删除URL的Python列表末尾的特殊字符/标点符号
  14. HTML页面返回503状态码设置,503错误网页状态码出现原因及监控方法介绍
  15. 激情彭拜的10月英语学习
  16. 计算机考研复习资料推荐
  17. 密码编码学与网络安全———原理与实践(第八版)第三章笔记
  18. 笔记 绝望主妇第1季第2章 --- desperate housewives session 1 episode 2
  19. centos 把文件打包为tar.gz命令
  20. 新酒店图集 | 北京大兴希尔顿、昆明喜来登和昆明德尔塔、银川JW万豪与银川万怡双品牌酒店陆续开业...

热门文章

  1. 登录功能图片验证码的实现
  2. Realtek PCIe GBE Family Controller(有线网卡)及Intel(R) Wi-Fi 6 AX201 160MHz(无线网卡)前出现出现黄色感叹号!解决方法。(win10)
  3. 【已解决】Windows Service服务 出现System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。
  4. CAD中如何查看要素高程
  5. 智能音箱的五大核心技术
  6. linux下Kdevelop开发基本步骤
  7. OKR 结果思维:为什么要以结果为导向?(第一部分)
  8. Delphi ord 函数
  9. PP.io的三个阶段,“强中心”——“弱中心”——“去中心”
  10. Exynos_4412——WDT实验