こんにちは!トビログ管理人のとびうおです!
今回はLaravel10でPhpSpreadsheetを使う方法について詳しく解説していきたいと思います。なお、Laravel10が正しくインストールされていることが前提です。
PhpSpreadsheetをインストールする
まず、PhpSpreadsheetをインストールします。
composer require phpoffice/phpspreadsheet
このようなコマンドを仕様すると、PhpSpreadsheetをインストールすることができます。
もし、sailを使っている場合は、
./vendor/bin/sail composer require phpoffice/phpspreadsheet
と打ちましょう。
では、ここからは簡単に使っていきましょう!
controllerを試しに使ってみる
続いたらcontrollerを作成しましょう。
(※もし作成済みの方はこのセクションは飛ばしてOKです)
php artisan make:controller SpreadsheetController
もしくは、
./vendor/bin/sail php artisan make:controller SpreadsheetController
で作成可能です!
実際に簡単なメソッドを作る
// SpreadsheetController
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
public function blog()
{
$spreadsheet = new Spreadsheet();
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$writer->save('php://output');
}
このようなメソッドを先ほどのcontrollerの中に作成し、そのcontrollerにアクセスできるようなRouteをweb.phpに定義しましょう。
// web.php
Route::get('/blog',[SpreadsheetController::class,'blog'])->name('blog');
そうすると、/blogにアクセスするとエクセルファイルがダウンロードされるようになります。
これで真っ白なExcelファイルが出力されましたね!
PhpSpreadsheetでHello Worldをする
では、続いて、実際にExcelファイルに文字を入れていきましょう!
public function blog()
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B1', 'World !');
$writer = new Xlsx($spreadsheet);
$fileName = 'example.xlsx';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'. $fileName .'"');
header('Cache-Control: max-age=0');
$writer->save('php://output'); // download file
}
このようなコードに書き換えましょう!
今回は $sheet->setCellValue('A1', 'Hello');
とあるように、A1にHelloを入れてあります!
このコードを実際にcontrollerに書き、再度/blogにアクセスすると以下のようなエクセルファイルがダウンロードされます。
これで好きなところに好きな文字を
入れられるようになったね!
PhpSpreadsheetの便利なメソッドたち
この項では簡単にPhpSpreadsheetの便利なメソッドを紹介したいと思います!
setCellValue()
特定のセルに値をセットすることができます。
phpCopy code$sheet->setCellValue('A1', 'Hello');
fromArray()
配列のデータを一括でワークシートにセットできます。
phpCopy code$data = [
[1, 2],
[3, 4],
[5, 6]
];
$sheet->fromArray($data, null, 'A1');
getCellByColumnAndRow()
特定の行と列のセルを取得できます。
phpCopy code$cell = $sheet->getCellByColumnAndRow(1, 1);
mergeCells()
指定した範囲のセルをマージすることができます。
phpCopy code$sheet->mergeCells('A1:B1');
getStyle() and applyFromArray()
セルや範囲のスタイルを取得し、配列で定義されたスタイルを適用します。
phpCopy code$sheet->getStyle('B2')->applyFromArray([
'font' => [
'bold' => true,
'color' => ['argb' => 'FFFF0000'],
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
]);
getHighestRow() and getHighestColumn()
ワークシート内の最も高い行番号と列名を取得できます。これは大きなデータセットを処理するときに特に便利です!
phpCopy code$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
setAutoFilter()
ワークシートにオートフィルタをセットすることができます。
phpCopy code$sheet->setAutoFilter($sheet->calculateWorksheetDimension());
insertNewRowBefore()
指定した行の前に新しい行を挿入することができます。
phpCopy code$sheet->insertNewRowBefore(1, 1);
PhpSpreadsheetは色々便利なメソッドが多くあります!
ぜひ使ってみてください!
まとめ
PhpSpreadsheetをLaravelで簡単に使えるようになりましたか?
PhpSpreadsheetはとても便利なライブラリなのでぜひ活用していきましょう!!!
トビログではこれの記事以外にもLaravelのことを多く発信しています。ぜひ見てみてください!
コメント