# Laravelでmaatwebsite/excelを使ってエクセル出力する方法(ステップバイステップ解説)
このドキュメントでは、Laravelプロジェクトに「maatwebsite/excel」パッケージを導入し、データベースの内容をエクセルファイルとして出力する方法を、初学者向けにわかりやすく解説します。

## 1. パッケージのインストール
まず、ターミナルで以下のコマンドを実行し、maatwebsite/excelをインストールします。
“`
composer require maatwebsite/excel
“`
> **注意**:
> – `composer`コマンドはプロジェクトのルートディレクトリで実行してください。
> – 権限や所有者の問題がある場合は、`sudo`や`–no-scripts`オプションを検討してください。
—
## 2. エクスポート用クラスの作成
エクセルに出力したい内容ごとに「エクスポートクラス」を作成します。ここでは「events」と「teams」テーブルを結合して出力する例を示します。
“`
php artisan make:export EventsTeamsExport
“`
このコマンドで `app/Exports/EventsTeamsExport.php` が作成されます。
—
## 3. エクスポートクラスの編集
`app/Exports/EventsTeamsExport.php` を以下のように編集します。
“`php
<?php
namespace App\Exports;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
class EventsTeamsExport implements FromCollection
{
public function collection()
{
// eventsとteamsを結合して出力
return DB::table(‘teams’)
->join(‘events’, ‘teams.event_id’, ‘=’, ‘events.id’)
->select(
‘teams.id as team_id’,
‘teams.name as team_name’,
‘teams.address’,
‘teams.tel’,
‘events.id as event_id’,
‘events.name as event_name’,
‘events.event_start’,
‘events.event_end’
)
->get();
}
}
“`
—
## 4. コントローラーにエクスポート処理を追加
例として `TeamController` にエクセル出力用のメソッドを追加します。
“`php
use App\Exports\EventsTeamsExport;
use Maatwebsite\Excel\Facades\Excel;
class TeamController extends Controller
{
// …既存のメソッド…
public function export()
{
return Excel::download(new EventsTeamsExport, ‘events_teams.xlsx’);
}
}
“`
—
## 5. ルート(routes/web.php)にエクスポート用URLを追加
`routes/web.php` の `Route::middleware(‘auth’)->group(function () { … });` 内に以下を追加します。
“`php
Route::get(‘events-teams/export’, [App\Http\Controllers\TeamController::class, ‘export’])->name(‘events-teams.export’);
“`
—
## 6. 画面にエクセル出力ボタンを追加
たとえば `resources/views/teams/index.blade.php` の「新規作成」ボタンの横などに、以下のようにリンクを追加します。
“`blade
<a href=”{{ route(‘events-teams.export’) }}” class=”btn btn-success mb-3 ms-2″>Excel出力</a>
“`
—
## 7. 動作確認
– ブラウザで `/teams` 画面を開き、「Excel出力」ボタンをクリックすると、`events_teams.xlsx` ファイルがダウンロードされます。
– ファイルを開くと、eventsとteamsの結合データが確認できます。
—
## 注意事項
– ルート定義は必ず `Route::middleware(‘auth’)->group` の中に記述してください。
– コントローラーやエクスポートクラスの `use` 文の記述漏れに注意してください。
– DBの内容や結合条件はプロジェクトに合わせて調整してください。
– サーバーの権限やストレージリンク(`php artisan storage:link`)の設定も必要な場合があります。
—
## まとめ
この手順で、Laravelでmaatwebsite/excelを使ったエクセル出力機能を簡単に実装できます。エクスポート内容やレイアウトは、エクスポートクラスをカスタマイズすることで柔軟に対応できます。
何かエラーが出た場合は、エラーメッセージやログ(`storage/logs/laravel.log`)を確認しましょう。