【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导入类,感觉最高效&轻量级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值