Laravel Excel 3.1 使用方法 Excel 匯入操作
自從 maatwebsite/excel 3.0 更新以後就沒用過, 因為只有匯出功能,而我們更需要的是匯入匯出功能,
我要用匯入功能真是找案例都都找不到~沒辦法自己學習使用吧~再寫這樣一個文件,湊合著給大家看~
下面還是按順序講一遍操作吧:
第一步:
composer require maatwebsite/excel ~3.1.0
安裝3.1.0向上的版本 我用的3.1.0 中國映象內暫時沒有,請去掉中國映象的配置
第二步:
新增ServiceProvider config/app.php
'providers' => [ /* * Package Service Providers... */ Maatwebsite\Excel\ExcelServiceProvider::class, ]
第三步:
新增門面在 config/app.php
'aliases' => [
...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
第四步:
生成配置檔案(我沒有生成配置檔案,無所謂,我不用~)
要釋出配置,請執行vendor publish命令:
php artisan vendor:publish
1這將建立一個名為的新配置檔案config/excel.php
。
如果以上步驟都順利完成,那下面就可以用了
按照文件走
第一步,要先建立一個你自己的模型類,在 App\Imports
所以自己手動在laravel 目錄 App 目錄下建立一個Imports(匯入功能,匯出功能還要建另一個匯入目錄)的目錄吧,不要使用命令了,這個make::Imports,我使用失敗了
然後在裡面建立一個類UserImoport.php
<?php namespace App\Imports; use App\User; use Illuminate\Support\Facades\Hash; use Maatwebsite\Excel\Concerns\ToModel; class UsersImport implements ToModel { /** * @param array $row * * @return User|null */ public function model(array $row) { return new User([ 'name' => $row[0], 'email' => $row[1], 'password' => Hash::make($row[2]), ]); } }
這裡向和我一樣不明白的小白說下,關於匯入匯出excel 文件裡主要設計到三種 : 模型 model , 集合 collection , 陣列 Array
文件是模型,匯入的是模型,我不太明白為什麼要匯入模型,可能這個當案例好用吧~
關於 implements ToModel 就是介面的繼承 重寫一份規範,我的理解就是 對 方法功能 的 再加工 其實就是加工操作,類似laravel 中介軟體的作用吧~
此外還有 implements ToArray 和 implements ToCollection 兩個方法,
我掛的也是一個空的匯入模型 直接貼程式碼用吧~
建立我自己的模型類
<?php
namespace App\Imports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToArray;
class UsersImport implements ToArray
{
public function Array(Array $tables)
{
return $tables;
}
}
我就是這樣寫的~ 也還沒研究透徹怎麼用
第二步直接引用就行了(我主要是匯入excel 檔案使用的)
然後就是主要用匯入的方法引用模型就行
匯入的方法 要和你寫的匯入模型內容一致
匯入方法有
$array = Excel::toArray(new UsersImport, 'users.xlsx');
$collection = Excel::toCollection(new UsersImport, 'users.xlsx');
以上兩種 ,引用你建立的模型,就可以直接獲得匯入的介面了。我用的toArray;
public function BatchUpload(Request $request)
{
$file = $request->file('excel'); //獲取UploadFile例項
if ( !$file->isValid()) { //判斷檔案是否有效
return redirect()
->back()
->withErrors('檔案上傳失敗,請重新上傳');
}
$data = Excel::toArray(new UsersImport, request()->file('excel'));
dd($data);
// 加工資料$data;
}
本文是草稿文件,後續繼續完善,今天時間不多了~
明天繼續完善吧~
QQ:2097724800 有志之士可以一起研究下怎麼用