phpspreadsheet版本:1.5.0php
spout版本:2.7.3bash
在一樣的環境下,運行代碼,spout的在內存使用和時間花費上都佔優,在phpspreadsheet讀取失敗的文檔spout依然能正確完成讀取。.net
spout代碼excel
<?php ini_set('memory_limit', '2G'); var_dump(memory_get_usage()); var_dump(microtime()); $loader = include 'vendor/autoload.php'; use Box\Spout\Common\Type; use Box\Spout\Reader\ReaderFactory; $file = '20.xlsx'; $type = pathinfo($file); $type = strtolower($type["extension"]); if ($type === 'xlsx') { $type = Type::XLSX; } else { $type = Type::CSV; } try{ $reader = ReaderFactory::create($type); $reader->open($file); $reader->setTempFolder('/dev/shm/'); $iterator = $reader->getSheetIterator(); $iterator->rewind(); $sheet1 = $iterator->current(); $rowIter = $sheet1->getRowIterator(); $data = array(); foreach ($rowIter as $rowIndex => $row) { $data[] = $row; } var_dump(count($data)); }catch (\Exception $e){ return []; } var_dump(microtime()); var_dump(memory_get_usage()); var_dump(memory_get_peak_usage());
phpspreadsheet代碼code
<?php ini_set('memory_limit', '2G'); var_dump(memory_get_usage()); var_dump(microtime()); $loader = include 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; $file = '20.xlsx'; try { $spreadsheet = IOFactory::load($file); $data = $spreadsheet->getActiveSheet()->toArray('', true, true); $spreadsheet->disconnectWorksheets(); unset($spreadsheet); var_dump(count($data)); } catch (Exception $e) { var_dump($e->getMessage()); } var_dump(microtime()); var_dump(memory_get_usage()); var_dump(memory_get_peak_usage());
更快速讀excel,可是空cell會直接跳過,一整行數據沒辦法一塊兒獲取到!blog
try { $sharedStringsHelper = new SharedStringsHelper('/a.xlsx'); $sharedStringsHelper->extractSharedStrings(); $index = 0; do { $cellValue = $sharedStringsHelper->getStringAtIndex($index) if($cellValue == false){ break; } } while (true); $sharedStringsHelper->cleanup(); }catch(Exception $e){ echo $e->getMessage(); }
其餘:內存
# Spout/Reader/XLSX/Helper/SharedStringsCaching/CachingStrategyFactory.php
class CachingStrategyFactory {
....
const MAX_NUM_STRINGS_PER_TEMP_FILE = 10000; // 改爲50000
....
}
原文:https://blog.csdn.net/supergao222/article/details/78629965 文檔