搜索
首页后端开发php教程php怎么导出大量数据的Excel

比较常用的是用PHPExcel,1万左右数据还行,但是数据到达100万左右,PHPExcel就显的很无助,搜索了下比较常用的是使用php的fputcsv,不知道还有什么办法能导出比较大量数据的excle

php怎么导出大量数据的Excel
刚刚测试了下fputcsv,发现全部挤到A中,无法换到B中

2012年9月2日添加
03版的确实是有限制的,格式php的csv的是不是用excel打开只会出现在A列上面?

2012年9月2日添加
我觉得我非常有必要说下为什么会有这个需求,一个大点的品牌公司,一年左右的订单,超过100万是很正常的,年末的时候他们的业务人员会根据订单进行各种分析,每个公司的分析角度又是不一样的,所以把所有订单导出来给业务人员是一个最简单的办法,为什么要导出excle,是因为对于业务人员来说这个是最常用的,你也不可能去帮助那么多家的公司开发这样那样的报表。
所以也就有了这个需求,怎么导出超过100万甚至1000万数据excle的问题

回复内容:

比较常用的是用PHPExcel,1万左右数据还行,但是数据到达100万左右,PHPExcel就显的很无助,搜索了下比较常用的是使用php的fputcsv,不知道还有什么办法能导出比较大量数据的excle

php怎么导出大量数据的Excel
刚刚测试了下fputcsv,发现全部挤到A中,无法换到B中

2012年9月2日添加
03版的确实是有限制的,格式php的csv的是不是用excel打开只会出现在A列上面?

2012年9月2日添加
我觉得我非常有必要说下为什么会有这个需求,一个大点的品牌公司,一年左右的订单,超过100万是很正常的,年末的时候他们的业务人员会根据订单进行各种分析,每个公司的分析角度又是不一样的,所以把所有订单导出来给业务人员是一个最简单的办法,为什么要导出excle,是因为对于业务人员来说这个是最常用的,你也不可能去帮助那么多家的公司开发这样那样的报表。
所以也就有了这个需求,怎么导出超过100万甚至1000万数据excle的问题

  1. PHP从数据库分多次读取100万行记录,和分多次将100万行写入文本文件都没问题
  2. Excel可以支持100万行记录,Excel 2003最大支持65536行,从2007版开始支持104万行了,目前2007的盗版应该比较普及了-_-! 问清楚你的客户是什么版本。
  3. 你要导出excel的理由是非常充分和正确的,应该继续坚持。业务人员最熟悉的就是Excel,实在不熟悉现学现用也比别的快。只是要注意,当数据量达到10万行这个级别时,Excel的公式填充将会非常非常慢,如果再有LOOKUP()公式,基本上十分钟内处理CPU满载进程管理器杀不掉的状态,这时候其实xampp + phpmyadmin是一个易用性和性能都最平衡的选择
  4. PHPExcel输出的是Excel XML格式,有个XML头和尾,中间是数据Body,需要将100万行都赋值给一个数组才可以调用PHPExcel->write(),这容易导致PHP执行超时或者内存超限,你不妨调整一下php.ini配置,把超时时间和内存限制都改到很大
  5. 如果是输出csv格式,那就太简单了,你的问题可能是没给字段内容加引号,加上引号再调用fputcsv试试?其实fputcsv做的事情特别简单,你甚至可以不管它,自己把CSV文件的每一行拼接好了之后用file_put_contents写入

最后给你看一个phpmyadmin导出的CSV示例,对照你自己生成的CSV示例,看看哪里不一样。php怎么导出大量数据的Excel

之前我导出都是用csv的,如果putcsv有问题,你可以尝试自己去拼装csv的文件。csv的格式非常简单,就是英文逗号分隔。
看你截图,有可能是首行留空造成的问题,建议修改试试。
---
还有一个办法,就是用 \t 分割,存成文本文件,然后复制黏贴到excel里

很赞同2楼的说法。
excel本身就不是为大数据而操作的,如果你真的过10万行,你还是不要用excel来操作了,这样真的会死人的。
当然如果你真的要操作,你还是存到access中。然后用excel来读取access的数据来生成各种图表(如果你的excel是为了要用来生成图表的话)。
否则,真没意义啊。

如果我没记错的话,Excel极限是65536条。

1.Excel本身就不能装几百万数据。Excel是有条数限制的。具体多少条你可以查阅相关资料。
2.你可以将数据按照条数进行分割写入不同的Excel文件。生成多个。
3.即使你写入csv文件,你想用Excel打开几百万数据也不太现实

excel分列就好了

可以csv , 不段的刷新缓冲期,来实现大数据流的导出

$fp = fopen('php://output', 'a');

// 输出Excel列名信息
$head = array("电子邮件");
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;

// 逐行取出数据,不浪费内存
$count = count($email);

for($t=0;$t $v) {
        $row[$i] = iconv('utf-8', 'gbk', $v);
    }
    fputcsv($fp, $row);
    unset($row);
}

循环生成CSV 数据, 每生成1000 条的时候刷新下缓冲期

$filename='./file.csv';
$handle=fopen($filename,"w");
fwrite($handle,chr(255).chr(254));
fwrite($handle,iconv("UTF-8","UTF-16LE","值1\t值2\t值3\t值n\\r\n"));
fclose($handle);

用这个看下,别一下查询出全部数据,你可以参考下mysql_unbuffered_query

03版的确实是有限制的,格式php的csv的是不是用excel打开只会出现在A列上面?

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
优化PHP代码:减少内存使用和执行时间优化PHP代码:减少内存使用和执行时间May 10, 2025 am 12:04 AM

TOOPTIMIZEPHPCODEFORDUSEMEMORYUSAGEAGEAGEAGEAGEAGEANDEXECUTITIEM,关注台词:1)USEREEREFERESCENCENCINCOPYINSTEADOFCOPYINGINATATASTRUCTURESTROUCTURESTOREDUCEMORYCONSUMPTION.2)杠杆phphppphpphp'sbuilt intimpunctionslikearray_mapforfunctionslikearray_mapforfforfforfforfasterapasterexecution.3)

PHP电子邮件:分步发送指南PHP电子邮件:分步发送指南May 09, 2025 am 12:14 AM

phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自动化notifications andMarketingCampaigns.1)设置设置yourphpenvironcormentswironmentswithaweberswithawebserverserverserverandphp,确保themailfunctionisenabled.2)useabasicscruct

如何通过PHP发送电子邮件:示例和代码如何通过PHP发送电子邮件:示例和代码May 09, 2025 am 12:13 AM

发送电子邮件的最佳方法是使用PHPMailer库。1)使用mail()函数简单但不可靠,可能导致邮件进入垃圾邮件或无法送达。2)PHPMailer提供更好的控制和可靠性,支持HTML邮件、附件和SMTP认证。3)确保正确配置SMTP设置并使用加密(如STARTTLS或SSL/TLS)以增强安全性。4)对于大量邮件,考虑使用邮件队列系统来优化性能。

高级PHP电子邮件:自定义标题和功能高级PHP电子邮件:自定义标题和功能May 09, 2025 am 12:13 AM

CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

使用PHP和SMTP发送电子邮件的指南使用PHP和SMTP发送电子邮件的指南May 09, 2025 am 12:06 AM

使用PHP和SMTP发送邮件可以通过PHPMailer库实现。1)安装并配置PHPMailer,2)设置SMTP服务器细节,3)定义邮件内容,4)发送邮件并处理错误。使用此方法可以确保邮件的可靠性和安全性。

使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能