使用"maatwebsite/excel": "^3.1" 导入
官方文档地址
代码语言:javascript复制https://docs.laravel-excel.com/3.1/imports/batch-inserts.html
1.安装composer包
代码语言:javascript复制composer require maatwebsite/excel
2. 在 config/app.php 中注册服务提供者到 providers 数组:
代码语言:javascript复制MaatwebsiteExcelExcelServiceProvider::class,
3.在 config/app.php 中注册到 aliases 数组:
代码语言:javascript复制'Excel' => MaatwebsiteExcelFacadesExcel::class,
4.生成 Laravel Excel 的配置文件:(发布)
代码语言:javascript复制php artisan vendor:publish --provider="MaatwebsiteExcelExcelServiceProvider"
至此,完成了composer包的安装步骤
5.新建一个导入文件
代码语言:javascript复制php artisan make:import 文件名称 --model=Model地址
此操作会在app/下创建一个Import目录并创建一个文件
代码语言:javascript复制.
├── app
│ ├── Imports
│ │ ├── CompanyUserImport.php
│
└── composer.json
我这里需要导入的数据需要自己处理一下,所以使用的ToCollection的方法
app/Import/CompanyUserImport.php代码如下:
代码语言:javascript复制<?php
namespace AppImports;
use AppModelsCompanyCompanyUserModel;
use MaatwebsiteExcelConcernsToCollection;
use IlluminateSupportCollection;
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
}
}
控制器调用
代码语言:javascript复制<?php
namespace AppHttpControllersCompany;
use IlluminateHttpRequest;
use AppImportsCompanyUserImport;
use AppHttpControllersController;
use MaatwebsiteExcelFacadesExcel;
class CompanyUserController extends Controller
{
/**
* excel批量导入成员
*
* @param Request $request
* @return void
*/
public function importMember(Request $request)
{
Excel::import(new CompanyUserImport, request()->file('excelfile'));
}
}