Skip to main content

blocs/docs: Excelファイル操作(Blocs\Excel)

blocs/docs: Excelファイル操作(Blocs\Excel)

パッケージに組み込まれているExcelファイル操作用の軽量な機能です。セルの値の取得・設定、シート名の取得・変更、ファイルのダウンロードが行えます。

セルの値を取得する方法

get メソッドを使用します。

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]);

メモリを節約した読み込み

openfirst で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();

savedownload は内部で 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');