PhpSpreadsheet を少しでも軽くする方法
PhpSpreadsheet を少しでも軽くする方法
PHP で Excel を扱える PhpSpreadsheet がとにかく重く、メモリを使うので少しでも軽くする方法メモ。
サンプル
書き込み、追記でないのであれば読み取りモードにすることで早くなります。 また最後にメモリを解放することでメモリの圧迫にも対応
use PhpOffice\PhpSpreadsheet\IOFactory;
class Excel{
public function load($filePath, $sheetName){
$reader = IOFactory::createReader('Xlsx');
// セルのデータだけ読み取る
$reader->setReadDataOnly(true);
// 特定のシートだけ読み取る
$reader->setLoadSheetsOnly($sheetName);
$spreadsheet = $reader->load($filePath);
// TODO 処理
// ワークシートを閉じてメモリを解放
$spreadsheet->disconnectWorksheets();
$spreadsheet->garbageCollect();
}
}