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'));
    }
}

 

posted @ 2021-02-01 15:56  六娃的博客  阅读(2640)  评论(0编辑  收藏  举报