PhpSpreadsheet を少しでも軽くする方法
PHP
で Excel
を扱える PhpSpreadsheet
がとにかく重く、メモリを使うので少しでも軽くする方法メモ。
サンプル
書き込み、追記でないのであれば読み取りモードにすることで早くなります。
また最後にメモリを解放することでメモリの圧迫にも対応
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| 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();
}
}
|
参考