Laravelで簡単にテーブル情報をEXCELでダウンロード

Posted in Laravel on 10月 26, 2016

前回、maatwebsite/excelパッケージを利用したCSVファイルのインポートの方法について説明を行いましたが、インポートの次はデータのエクスポート(ダウンロード)について説明を行います。

引き続き、maatwebsite/excelパッケージを利用して簡単に行います。 maatwebsite/excelパッケージのインストールについては、前回の記事を参考にしてください。

Laravelで簡単にCSVファイルをインポートする方法

ダウンロードに必要なファイルの作成

ルーティングの追加

web.php

Route::get('export/{downloadtype}', 'ExportController@export');

URLからパラメータの値を受け取るために{{ downloadtype }}を設定します。

downloadtypeには、csv、xlsといったダウンロードしたいファイルの拡張子を指定します。

リンクの追加

追加したルーティングへのリンクを追加します。

<a href="/export/csv">CSVファイルのダウンロード</a>

csvファイルでダウンロードするためにcsvを指定しています。エクセルファイルでダウンロードしたいときは、xlsxもしくはxlsを指定してください。

コントローラーの作成

非常に簡単な記述でCSVファイルをダウンロードすることができます。

ExportController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use Excel;

use App\Product;

class ExportController extends Controller
{

    public function export($downloadtype){

        $data = Product::all()->toArray();

        return Excel::create('test', function($excel) use ($data){
            $excel->sheet('sheet1', function($sheet) use ($data)
            {
                $sheet->fromArray($data);
            });
        })->download($downloadtype);
    }

}

ファイルのダウンロード

追加したリンクをクリックするとCSVファイルがダウンロードできます。

リンクをcsvからxlsxに変更するとエクセルファイルとして保存することができます。

EXCELデータでダウンロード

以上のように簡単にデータのダウンロードを行うことができます。