1.安装maatwebsite/excel
我这里是laravel7的最后一个版本v7.30.1,截至本文章发布,maatwebsite/excel的最新版本为3.1.26,所以我这里并没有指定版本。
composer require maatwebsite/excel
如果要指定版本,也可以执行如下命令安装
composer require maatwebsite/excel ~3.1
Maatwebsite\Excel\ExcelServiceProvider
默认会自动发现和注册。
如果你想自己注册它,可以在config/app.php
中添加ServiceProvider
:
'providers' => [
/*
* Package Service Providers...
*/
Maatwebsite\Excel\ExcelServiceProvider::class,
]
Excel facade
也是自动发现的。
如果你想手动添加它,可以在config/app.php
中添加Facade
:
'aliases' => [
...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
要发布配置,使用vendor publish
命令执行注册:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
如果成功,这将创建一个名为config/excel.php的新配置文件。
2.表格导出
在app/Exports
中创建一个导出类
你可以使用make:export
命令来做这件事。
php artisan make:export UsersExport --model=User
如果执行成功,可以在app/Exports
中找到该文件UsersExport.php
。
当然,如果你喜欢手动创建,你可以在app/Exports
中创建以下内容:
我们在控制器中,现在可以调用这个export
,我这里是UsersController
控制器,你也可以创建其它控制器都可以。
目前我测试的可以正常到处csv、xls、xlsx
等,只需要将users.xlsx
,改成对应的csv、xls、xlsx
后缀名即可。
按官方代码中来说,支持(xlsx、xlsm、 xltx、 xltm、 xls、xlt、ods、ots、slk、xml、gnumeric、htm、html、csv、tsv、pdf
),具体有兴趣可以自己测试。
最后添加一个可以访问导出的路由:
Route::get('users/export/', 'UsersController@export');
3.表格导入
在app/Imports
中创建一个导入类
你可以使用make:import
命令来做这件事。
php artisan make:import UsersImport --model=User
如果执行成功,可以在app/Imports中找到该文件UsersImport.php
:
当然,如果你喜欢手动创建,你可以在app/Imports
中创建以下内容:
$row[0],
'email' => $row[1],
'password' => Hash::make($row[2]),
]);
}
}
我这里是UsersController
控制器,你也可以创建其它控制器都可以:
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
public function import()
{
Excel::import(new UsersImport, 'users.xlsx');
return redirect('/')->with('success', 'All good!');
}
}
最后,同样添加一个可以访问导入的路由。注意:这里是导入的用户表,测试的时候要注册导入数据要符合字段类型和长度。具体的users
表导入字段可以查看app\User.php
。
Route::get('users/import/', 'UsersController@import');
好了,现在可以愉快的开始玩耍啦。更多的玩法可以参考官方文档:
https://docs.laravel-excel.com/3.1/getting-started/