Copy & Paste Engineer

PhpSpreadsheet を少しでも軽くする方法

PhpSpreadsheet を少しでも軽くする方法

PHPExcel を扱える 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();
    }
}

参考