composer require maatwebsite/excel
步骤1、composer 运行下面命令安装
composer require "maatwebsite/excel:~2.1.0"
如果本地安装提示:
报上面错的话 执行:
COMPOSER_MEMORY_LIMIT=-1 composer require "maatwebsite/excel:~2.1.0"
步骤2、打开laravel项目中的config/app.php文件,添加以下两处
//providers元素添加
Maatwebsite\Excel\ExcelServiceProvider::class,
//aliases元素添加
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
步骤3、发送配置文件(执行后会自动生成一个配置文件config/excel.php)
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
php artisan make:export UsersExport --model=User
控制器中导出,这样默认导出模型对应的表的数据
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
但是一般我们要导出的可能不止单表的数据,那么通常我们会先查询组合好数据格式(二维数组) ,然后导出。
生成导出文件app/Exports/TestExport
php artisan make:export TestExport
如图:
复制下面代码,编辑TestExport.php文件
data = $data;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return collect($this->data);
}
}
public function export(Request $request)
{
$cellData[] = ['学号','姓名','成绩'];
$list = [
['10001','AAAAA','99'],
['10002','BBBBB','92'],
['10003','CCCCC','95'],
['10004','DDDDD','89'],
['10005','EEEEE','96'],
];
if ($list) {
$cellData = array_merge($cellData, $list);
}
//此时打印出结果如下
// $data = [
// ['学号','姓名','成绩'],
// ['10001','AAAAA','99'],
// ['10002','BBBBB','92'],
// ['10003','CCCCC','95'],
// ['10004','DDDDD','89'],
// ['10005','EEEEE','96'],
// ];
// $data = [
// // ...
// ];
// download 方法直接下载,store 方法可以保存。具体的导出类型等看官方的文档吧
$obj = new TestExport($cellData);
return Excel::download($obj, 'test文件名称.xls');//***文件名
}
访问路由, 成功下载excel文件!完成。
4、开始测试导出
贴代码:
/*
* 后端直接导出excel
*/
public function export(Request $request)
{
$cellData[] = ['学号','姓名','成绩'];
$list = [
['10001','AAAAA','99'],
['10002','BBBBB','92'],
['10003','CCCCC','95'],
['10004','DDDDD','89'],
['10005','EEEEE','96'],
];
if ($list) {
$cellData = array_merge($cellData, $list);
}
//此时打印出 $cellData 结果如下
// $data = [
// ['学号','姓名','成绩'],
// ['10001','AAAAA','99'],
// ['10002','BBBBB','92'],
// ['10003','CCCCC','95'],
// ['10004','DDDDD','89'],
// ['10005','EEEEE','96'],
// ];
Excel::create( 'Excel表名字',function ($excel) use ($cellData){
$excel->sheet('score', function ($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('xlsx');
# 如果导出中午乱码用下面的
// Excel::create(iconv('UTF-8', 'GBK', 'Excel表名字'),function ($excel) use ($cellData){
// $excel->sheet('score', function ($sheet) use ($cellData){
// $sheet->rows($cellData);
// });
// })->export('xlsx');
}