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


觉得有用的点个赞加个关注吧!
有问题的欢迎在评论区留言!

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