Spout简介
使用phpExcel在读取体积较大的excel文件时,会提示Fatal error: Allowed memory size of
的错误,提示内存不够。可以使用Spout来解决。
Spout 是一个 PHP 库,用于以快速且可扩展的方式读取和写入电子表格文件(CSV、XLSX 和 ODS)。它能够处理非常大的文件,同时保持非常低的内存使用率(小于 3MB)。
官方网站:
https://opensource.box.com/spout/
github地址:
https://github.com/box/spout
安装方法
通过composer
或手动引入。
通过composer:
composer require box/spout
手动引入:
require_once '[PATH/TO]/src/Spout/Autoloader/autoload.php';
DEMO
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
$filePath = '/path/to/file.xlsx';
$reader = ReaderEntityFactory::createReaderFromFile($filePath);
$reader->open($filePath);
foreach ($reader->getSheetIterator() as $sheet) {
//只取第一个sheet
if($sheet->getIndex()>0) continue;
foreach ($sheet->getRowIterator() as $row) {
// do stuff with the row
$cells = $row->getCells();
$tmp = [];
foreach ($cells as $k=>$cell){
$value = $cell->getValue();
if(strlen($value)>0) $tmp[$k+1] = $value;
}
var_dump($tmp);die;
}
}
$reader->close();