跟时间来场赛跑

坚持记录,坚持学习,努力做个优秀的开发者

【Excel导入】关于Excel导入数据超时的一个小问题

抛出问题

Excel导入是运营批量任务常用的方法之一,但是代码在识别Excel的时候,获取方式不正确,或者Excel设置有问题的话,就会造成大量无用的处理请求,耽误代码执行的效率,例如:代码识别的时候,连同Excel的空白行都识别进去,处理的时候也处理空白行,今天我遇到的就是这样的问题,Excel识别到了6万多行,导致程序循环也打算循环6万多行,然后504超时


处理问题

        $filetype = $res["ext"] == "xlsx" ? "Excel2007" : "Excel5";
        $objReader = PHPExcel_IOFactory::createReader($filetype);
        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load($this->dir_root.$res["filename"]);
        $currentSheet = $objPHPExcel->getSheet(0);
        $allColumn = $currentSheet->getHighestColumn(); //获取列数
        $allRow = $currentSheet->getHighestRow(); //获取行数

如上图代码片,getHighestRow()方法获取的是Excel的行数,打印出来是6万多行,我们怎么处理这些呢,还是追本溯源,处理Excel将Excel尽可能的删除空白行,百度了解到的是:

选中首行的空白位置,然后shift + ctrl + ↓ 组合键,选中所有的空白行,然后右击删除,最重要的步骤来了,保存 保存 保存 最要的话说三遍,保存完毕之后,就可以导入了,如果你再打开看的话,也不要死命的滚下拉键哈,然后处理数据就是当前页的数据。


拓展

既然是csv,那就没必要使用PHPExcel了哈,这个开源库,太耗内存了,之前我用的是这个库,https://packagist.org/packages/league/csv(貌似只支持PHP7),demo我就不写了,自己去文档里面找,导入几十万条都没压力,不谢哈。
再介绍一个,https://packagist.org/packages/league/csv,没压力哈,建议题主先去了解一下csv是什么东东,我们甚至可以自己写一个csv导入类,感觉最高效&轻量级。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31617637/article/details/79981236
个人分类: 概念基础
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

【Excel导入】关于Excel导入数据超时的一个小问题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭