个人学习分享,错误之处欢迎指出
文档
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”
导出
- 开始
创建导出类 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
最重要的还是要自己看文档和源码,学习看源码非常非常重要