Laravel実践記

laravelでbladeを使用して動的にExcelを出力する方法

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の出力が可能です。データの可視化やレポート生成など、さまざまなシーンで活用してみてください。

-Laravel実践記

© 2024 Laravel World