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