laravel maatwebsite/excel3.1 导入详解
使用"maatwebsite/excel": "^3.1" 导入
官方文档地址
https://docs.laravel-excel.com/3.1/imports/batch-inserts.html
1.安装composer包
composer require maatwebsite/excel
2. 在 config/app.php 中注册服务提供者到 providers 数组:
Maatwebsite\Excel\ExcelServiceProvider::class,
3.在 config/app.php 中注册到 aliases 数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
4.生成 Laravel Excel 的配置文件:(发布)
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
至此,完成了composer包的安装步骤
5.新建一个导入文件
php artisan make:import 文件名称 --model=Model地址
此操作会在app/下创建一个Import目录并创建一个文件
. ├── app │ ├── Imports │ │ ├── CompanyUserImport.php │ └── composer.json
我这里需要导入的数据需要自己处理一下,所以使用的ToCollection的方法
app/Import/CompanyUserImport.php代码如下:
<?php namespace App\Imports; use App\Models\Company\CompanyUserModel; use Maatwebsite\Excel\Concerns\ToCollection; use Illuminate\Support\Collection; class CompanyUserImport implements ToCollection { /** * 使用 ToCollection * @param array $row * * @return User|null */ public function collection(Collection $rows) { foreach ($rows as $row) { // dump($row); // 处理数据 } CompanyUserModelDB::insert($data); } public function createData($rows) { //todo } }
控制器调用
<?php namespace App\Http\Controllers\Company; use Illuminate\Http\Request; use App\Imports\CompanyUserImport; use App\Http\Controllers\Controller; use Maatwebsite\Excel\Facades\Excel; class CompanyUserController extends Controller { /** * excel批量导入成员 * * @param Request $request * @return void */ public function importMember(Request $request) { Excel::import(new CompanyUserImport, request()->file('excelfile')); } }