1. 程式人生 > >Laravel Excel 3.1 使用方法 Excel 匯入操作

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 有志之士可以一起研究下怎麼用