Laravel6.x及以上版本使用laravel-excel3.x之导出

作者: 温新

分类: 【Laravel】

阅读: 3888

时间: 2021-02-11 16:44:28

从Laravel3.x版本开始,Laravel2.x的方法已经被放弃。因此在使用安装最新版本的laravel-excel版本而使用旧的方法会直接报错。而很多教程大多停留在2.x版本。从Laravel5.8开始,可以直接使用Laravel-excel3.1版本,一般而言,新版本必然是大势所趋。本篇文章基于导出功能,做一个简单的学习记录。

一切案例学习从官方文档开始https://docs.laravel-excel.com/3.1/exports/collection.html。

我使用的版本是laravel-excel3.1.26,也就是目前最新的版本。

第一步:安装

composer require maatwebsite/excel

第二步:配置(可选)

文件位置config/app.php

'providers' => [
    // 此处省略默认配置
    Maatwebsite\Excel\ExcelServiceProvider::class,
]
    
'aliases' => [
    // 此处省略默认配置
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

发布

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

第2步可以直接省略,也就是说,安装完后即可使用。

第三步:创建自定义导出文件

该命令app/Exports目录下生成对应的文件

php artisan make:export TestExport

生成后的文件内容

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;

class TestExport implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        //
    }
}

第四步:编辑导出文件

默认是返回集合,这里根据需求,修改成数组

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromArray;
use App\User;

class TestExport implements FromArray
{

    public function array(): array
    {
        $data = [
            // 设置表头信息
            ['序号','姓名','性别','年龄'],
        ];
        // 取出需求导出的数据
        $userDatas = User::get();
        foreach ($userDatas as $k => $v) {
            $data[] = [
                $v->id,
                $v->name,
                $v->gender,
                $v->age,
            ];
        }

        return $data;
    }
}

第五步:定义路由与方法

路由

Route::get('export','TestController@export');

控制器方法

<?php

namespace App\Http\Controllers;

use App\Exports\TestExport;
use Excel;

class QuestionController extends Controller
{
    // 导出
    public function export()
    {
        return Excel::download(new TestExport(), 'user.xlsx');
    }
}

这样导出就完成了。

2021-02-12

请登录后再评论