官网:https://docs.laravel-excel.com/
? PHP: ^7.0
? Laravel: ^5.5
? PhpSpreadsheet: ^1.6
? PHP扩展已php_zip启用
? PHP扩展已php_xml启用
? PHP扩展已php_gd2启用
//安装
composer require maatwebsite/excel
在laravel项目config/app.php中
//providers元素添加
Maatwebsite\Excel\ExcelServiceProvider::class,
//aliases元素添加
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
发布配置
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
//将自动建立一个新配置文件config/excel.php
php artisan make:export TestExport
//执行后会在新建app/Export/TestExport.php文件
新建的export,默认实现的接口是FromCollection,更改为FromArray,实现array方法
FromCollection以后有机会再讲
一般导出会传个id,到数据库查数据,例子传了个id但没到数据库查询
use Maatwebsite\Excel\Concerns\FromArray;
class TestExport implements FromArray
{
private $id;
public function __construct($id)
{
$this->id = $id;
}
public function array(): array
{
$data = [[$this->id,$this->id,$this->id],[1,2,3],[4,5,6],[7,8,9]];//测试数据
return $data;
}
}
use Maatwebsite\Excel\Facades\Excel;
class TestController extends Controller
{
public function export($id)
{
return Excel::download(new TestExport($id),'test.xlsx');
}
}
Route::get('/test/export/id/{id}', 'TestController@export');
访问: xx.com/test/export/id/1
即可导出
php artisan make:import TestImport
//执行后会在新建app/Export/TestExport.php文件
新建的import,默认实现的接口是ToCollection,更改为ToArray,实现array方法
ToCollection以后有机会再讲
use Maatwebsite\Excel\Concerns\ToArray;
class TestImport implements ToArray
{
public function array(array $array)
{
//处理导入数据$array
//...
return $array;
}
}
将上面导出的test.xlsx,放到/public/file目录下
public function import()
{
$array = Excel::toArray(new TestImport, public_path('/file/test.xlsx'));
dd($array);//简单的打印一下
}
Route::get('/test/import', 'TestController@import');
访问: xx.com/test/import
即可导出,
这里导入非手动选择,而是指定了文件路径/public/file/test.xlsx文件
结果:
感受:
? laravel excel3.1挺好用的,但光看文档不太能够使用,国内的文档大多还是老版本的。官方文档连最简单的导入导出数组,都没怎么涉及到,也可能是我对laravel不够熟悉吧。
原文:https://www.cnblogs.com/mg007/p/10962668.html