Laravel5.6中使用Laravel/Excel實現Excel檔案匯出功能

listenon發表於2018-07-27

最新版  composer require maatwebsite/excel


1、安裝的是maatwebsite/excel的2.1.0版本

composer require "maatwebsite/excel:~2.1.0"

注:此命令易報錯,最好在網速好的情況下跑複製程式碼

2、在config/app.php中註冊服務提供者到providers新增

Maatwebsite\Excel\ExcelServiceProvider::class,複製程式碼

3、在config/app.php中註冊門面到aliases新增:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,複製程式碼

4、對Laravel Excel進行更多的自定義設定

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"複製程式碼

5、設定路由

Route::get('/user/export','Admin\ExcelController@export');複製程式碼

6、建立控制器

php artisan make:controller Admin/ExcelController複製程式碼
<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Excel;
use App\User;
use App\Exports\CunliangExport;
class ExcelController extends Controller
{
    public function export()
    {
        //return Excel::download(new CunliangExport, 'invoices.xls');
        $data = User::get()->toArray();
        return Excel::create('註冊使用者表', function($excel) use ($data) {
            $excel->sheet('使用者列表', function($sheet) use ($data)
            {
                $sheet->cell('A1', function($cell) {$cell->setValue('編號');   });
                $sheet->cell('B1', function($cell) {$cell->setValue('姓名');   });
                $sheet->cell('C1', function($cell) {$cell->setValue('郵箱');   });
                $sheet->cell('D1', function($cell) {$cell->setValue('電話');   });
                $sheet->cell('E1', function($cell) {$cell->setValue('性別');   });
                $sheet->cell('F1', function($cell) {$cell->setValue('註冊時間');   });
                if (!empty($data)) {
                    foreach ($data as $key => $value) {
                        $i= $key+2;
                        $sheet->cell('A'.$i, $value['id']);
                        $sheet->cell('B'.$i, $value['name']);
                        $sheet->cell('C'.$i, $value['email']);
                        $sheet->cell('D'.$i, $value['mobile']);
                        $sheet->cell('E'.$i, $value['sex']);
                        $sheet->cell('F'.$i, $value['created_at']);
                    }
                }
            });
        })->download('xls');
    }
}
複製程式碼

在blade模板檔案新增以下程式碼

<div class="box-header">
    <a class="btn btn-success" href="/user/export">匯出</a>
</div>複製程式碼

備註:匯出的數字過長如:身份證,會進行科學計數,則需在匯出值前加空格

$sheet->cell('E'.$i, ' '.$value['card']);


相關文章