laravel maatwebsite/excel之导出篇

laravel maatwebsite/excel3.1之导出篇

个人学习分享,错误之处欢迎指出

文档

github 地址

链接: https://github.com/Maatwebsite/Laravel-Excel.

官网地址

链接: https://docs.laravel-excel.com/3.1/getting-started/.

版本

我php版本是7.2,所以用的是3.1,3的版本差别不大,但是2和3完全不一样
在这里插入图片描述

安装

安装
composer require maatwebsite/excel
安装指定版本
composer require “maatwebsite/excel”: “~31.0”

导出

  1. 开始
    创建导出类 app/Exports
    您可以通过使用make:export命令来执行此操作。

php artisan make:export UsersExport --model=User

该文件位于app/Exports:

.
├── app
│ ├── Exports
│ │ ├── UsersExport.php

└── composer.json

2 导出有几种类型
1.集合

namespace App\Exports;

use App\Http\Model\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    
    
    public function collection()
    {
    
    
        return User::all();
    }
}

下载

public function export() 
{
    
    
    return Excel::download(new UsersExport , 'user.xlsx');
}

存储

public function export() 
{
    
    
   return Excel::store(new UsersExport , 'user.xlsx');
}

2.查询query

namespace App\Exports;

use App\Http\Model\User;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;

class UsersExport implements FromQuery
{
    
    
    use Exportable;

    public function query()
    {
    
    
        return User::query();
    }
}

3.视图View(还没用过就先不说啦)
自己看官方文档把:
链接: https://docs.laravel-excel.com/3.1/exports/from-view.html.
差别不大
4.数组

namespace App\Exports;

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

class UsersExport implements FromArray
{
    
    
    public function array(): array
    {
    
    
        return [
            [1, 2, 3],
            [4, 5, 6]
        ];
    }
}

5.队列(还没用过后面再更新)
自己先看文档把
链接: https://docs.laravel-excel.com/3.1/exports/queued.html.

映射

1.映射行

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;

class UsersExport implements FromQuery, WithMapping
{
    
        
    /**
    * @var User $user
    */
    public function map($user): array
    {
    
    
        return [
            $user->username,
            $user->phone,
            Date::dateTimeToExcel($user->created_at),
        ];
    }
}

2.格式化列

namespace App\Exports;

use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithMapping;

class UsersExport implements WithColumnFormatting, WithMapping
{
    
    
    public function map($user): array
    {
    
    
        return [
            $user->username,
            $user->phone,
            Date::dateTimeToExcel($user->created_at),
        ];
    }
    
    public function columnFormats(): array
    {
    
    
        return [
            'B' => NumberFormat::FORMAT_DATE_DDMMYYYY,
        ];
    }
}

个人觉得完全可以在map直接出来就好了

3.添加标题行

use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;

class UsersExport implements FromQuery, WithHeadings
{
    
       
    public function headings(): array
    {
    
    
        return [
            'User#',
            'Phone',
            'Date',
        ];
    }
}

未完待更
1.封装
2.导出样式设置
3.队列
4.图片
5.多个Sheets
最重要的还是要自己看文档和源码,学习看源码非常非常重要

猜你喜欢

转载自blog.csdn.net/weixin_42090343/article/details/106698618