最近用了maatwebsite/excel的匯入,找了很多文章都是2.1的,總結了一下3.1版本步驟
附上官方文件地址
laravel-excel/maatwebsite/excel文件
下面來說一下具體步驟,因為我只用到了ToCollection,所以就說下這個,後續有用到了會繼續更新
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"
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'));
}
}
附上app/Import/CompanyUserImport.php中collection方法裡的dump效果
本作品採用《CC 協議》,轉載必須註明作者和本文連結