blocs/docs: Excelファイル操作(Blocs\Excel)
blocs/docs: Excelファイル操作(Blocs\Excel)
パッケージに組み込まれているExcelファイル操作用の軽量な機能です。セルの値の取得・設定、シート名の取得・変更、ファイルのダウンロードが行えます。
セルの値を取得する方法
get メソッドを使用します。
- 第1引数: シート番号またはシート名
- 第2引数: 列番号または列名
- 第3引数: 行番号または行名
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$value = $excel->get(1, 'A', '5');
第4引数に true を指定すると、計算結果ではなくセルの数式を取得できます。
$formula = $excel->get(1, 'A', '5', true);
全てのセルの値を一括取得
大量のセルを扱う場合は all メソッドが効率的です。
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$records = $excel->all('Worksheet');
第2引数に列番号の配列を指定して、特定の列のみ取得することも可能です(列名は使用不可)。
$records = $excel->all('Worksheet', [0]);
メモリを節約した読み込み
open と first で1行ずつ効率的にデータを取得できます。
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$excel->open('Worksheet', [0]);
while ($record = $excel->first()) {
...
}
first で最終行まで読み込むと自動で close が実行されます。途中終了する場合は明示的に close を呼び出してください。
$excel->close();
シート名を取得する方法
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$sheetNames = $excel->sheetNames();
セルの値を設定する方法
set メソッドで値をセットし、save で保存します。
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$excel->set(1, 'A', '3', 5);
$excel->set(1, 'A', '5', $value);
$excel->save('sample.xlsx');
set メソッドと name メソッドはメソッドチェーンに対応しています。
$excel->set(1, 'A', '3', 5)->set(1, 'A', '5', $value)->save('sample.xlsx');
バイナリデータを生成する方法
generate メソッドで、変更済みのExcelファイルをバイナリ文字列として取得できます。ストリーミング処理でメモリ効率よく生成されます。
$binaryContent = $excel->generate();
save や download は内部で generate を呼び出しています。
ファイルをダウンロードする方法
return $excel->download('sample.xlsx');
シート名を変更する方法
name メソッドを使います(第1引数はシート番号のみ、シート名は使用不可)。
use Blocs\Excel;
$excel = new Excel('sample.xlsx');
$excel->name(1, 'newWorksheet');
return $excel->download('sample.xlsx');