laravel-admin安裝maatwebsite/excel實現導出功能

需求分析

laravel-admin是自帶導出功能的,但是並不是能夠符合我們的需求,
首先它導出的時候,文件的名字,是以當前列表查詢的主表爲名字
其次,字段也不是中文的,那麼就需要我們通過compose去安裝工具來實現這個功能,
當讓,用原生的php去實現也是可以的!

安裝

composer require maatwebsite/excel:~3.1.0

使用

在Admin文件夾下新建一個文件夾,用來存放導出各個列表的導出文件
以用戶列表的導出爲例子,新建導出類UserExport.php 代碼內容如下:

代碼的註釋會寫在代碼旁邊

<?php

namespace App\Admin\Exports;

use App\Enum\PositionStatus;
use App\Enum\UserEnum;
use Encore\Admin\Grid\Exporters\ExcelExporter;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class UserExport extends ExcelExporter implements WithMapping, WithHeadings, ShouldAutoSize
{
	//這裏是導出來的文件的名字和格式
    protected $fileName = '用戶列表.xlsx';
	//這裏是excel的標題
    public function headings(): array
    {
        return [
            '編號',
            '會員賬號',
            '會員名稱',
            '代理名稱',
            '金額',
            '來源',
            '所屬管理員',
            '認證',
            '是否允許開倉',
            '創建時間'
        ];
    }

    public function map($user): array
    {	//這裏是字段的值 如果是主表的數據 直接對象的形式就可以寫出來
    	//如果是關聯的表的數據 可以通過data_get()去渲染
    	//其他部分是枚舉類字段值的語義化 
        return [
            $user->id,
            $user->user_name,
            $user->name,
            data_get($user, 'agent.name'),
            data_get($user, 'agent.money'),
            UserEnum::TYPE[$user->type],
            data_get($user, 'admin.username'),
            UserEnum::REAL_NAME_VERIFY[$user->real_name_verify],
            PositionStatus::OPEN_PERMISSION[$user->open_permission],
            $user->create_at
        ];
    }
}

那麼導出文件就寫完了,那麼如何在列表頁面如何調用呢
只需要在用戶列表的方法下多加一句話

$grid->exporter(new UserExport());

至此,導出功能就完成了
更多配置請戳官方文檔:
https://docs.laravel-excel.com/3.1/exports/export-formats.html


覺得有用的點個贊加個關注吧!
有問題的歡迎在評論區留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章