一切案例学习从官方文档开始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');
}
}
这样导出就完成了。