laravelでbladeを使用して動的にExcelを出力する方法
この記事では、Bladeテンプレートを利用してExcelを動的に生成・出力する方法を学びます。
1. 必要なパッケージをインストール
まずはじめに、`maatwebsite/excel` パッケージをインストールします。このパッケージを使用することで、LaravelでのExcelの操作が格段に簡単になります。
composer require maatwebsite/excel
2. サービスプロバイダの登録
config/app.phpの`providers`配列に以下を追加します。
Maatwebsite\Excel\ExcelServiceProvider::class,
`aliases`配列に以下を追加します。
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
3. Bladeテンプレートの作成
resources/viewsディレクトリに、Excel出力用のBladeテンプレートを作成します。例として`export.blade.php`というファイルを作成し、以下のように記述します。
<table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Email</th> </tr> </thead> <tbody> @foreach($users as $user) <tr> <td>{{ $user->id }}</td> <td>{{ $user->name }}</td> <td>{{ $user->email }}</td> </tr> @endforeach </tbody> </table>
4. コントローラの作成
以下のように、コントローラにExcelの出力ロジックを追加します。
use Maatwebsite\Excel\Excel; use Illuminate\Contracts\View\View; use Maatwebsite\Excel\Concerns\FromView; class UserExport implements FromView { public function view(): View { return view('export', [ 'users' => User::all() ]); } } public function exportExcel() { return Excel::download(new UserExport, 'users.xlsx'); }
5. ルートの定義
最後に、`routes/web.php`に以下のルートを追加します。
Route::get('export-excel', 'YourController@exportExcel');
これで、`/export-excel`にアクセスすると、動的に生成されたExcelファイルがダウンロードされます。
まとめ
LaravelとBlade、そして`maatwebsite/excel`パッケージを利用することで、簡単に動的なExcelの出力が可能です。データの可視化やレポート生成など、さまざまなシーンで活用してみてください。