1. 程式人生 > >【Excel匯入】關於Excel匯入資料超時的一個小問題

【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匯入類,感覺最高效&輕量級。