开发者社区> 问答> 正文

php如何导出大量数据的Excel?

比较常用的是用PHPExcel,1万左右数据还行,但是数据到达100万左右,PHPExcel就显的很无助,搜索了下比较常用的是使用php的fputcsv,不知道还有什么办法能导出比较大量数据的excle
screenshot
刚刚测试了下fputcsv,发现全部挤到A中,无法换到B中
格式php的csv的是不是用excel打开只会出现在A列上面?
我觉得我非常有必要说下为什么会有这个需求,一个大点的品牌公司,一年左右的订单,超过100万是很正常的,年末的时候他们的业务人员会根据订单进行各种分析,每个公司的分析角度又是不一样的,所以把所有订单导出来给业务人员是一个最简单的办法,为什么要导出excle,是因为对于业务人员来说这个是最常用的,你也不可能去帮助那么多家的公司开发这样那样的报表。
所以也就有了这个需求,怎么导出超过100万甚至1000万数据excle的问题

展开
收起
落地花开啦 2016-06-12 14:01:42 5974 0
2 条回答
写回答
取消 提交回答
  • github.com/xuri

    推荐一个功能丰富、兼容性好、高性能的 Excel 文档基础库 Excelize:https://github.com/xuri/excelize https://xuri.me/excelize/images/excelize.svg

    2020-12-08 11:39:40
    赞同 1 展开评论 打赏
  • 喜欢技术,喜欢努力的人

    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示例,看看哪里不一样。
    screenshot

    2019-07-17 19:33:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载