Laravel Excel 3.1

cmfac發表於2019-10-24

https://docs.laravel-excel.com/3.1/exports... 這裡是官方文件
安裝命令:

composer require maatwebsite/excel

加入服務提供者

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

加入門面

'aliases' => [
    ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]

建立配置檔案

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

匯入Excel :
建立一個 匯入基類

php artisan make:import Import

匯入基類會有很多種處理方式:

  1. 使用集合:
    namespace \App\Import;
    use Maatwebsite\Excel\Concerns\ToCollection;
    class Import implements ToCollection
    {
    /**
    * @param Collection $collection
    */
    public function collection(Collection $collection)
    {
        //
        return $collection;
    }
    }
  2. 使用模型:
    namespace \App\Import;
    use Maatwebsite\Excel\Concerns\ToModel;
    class Import implements ToModel
    {
    /**
     * @param array $row
     *
     * @return User|null
     */
    public function model(array $row)
    {
        return new \App\User([
           'name'     => $row[0],
           'email'    => $row[1],
           'password' => Hash::make($row[2]),
        ]);
    }
    }
  3. 控制器程式碼(這裡把匯入結果寫入到檔案)

    public function testImport()
    {
        $a =  \Excel::toArray(new \App\Imports\Import,'test.xlsx','public');
        if(is_array($a)){
            $this->arrToStr($a);
        }
        Storage::append('file.log', $this->str);
    }
    
    public function arrToStr($arr){
        foreach($arr as $val){
            if(is_array($val)){
                $this->arrToStr($val);
            }
            else {
                $this->str.=$val;
            }
        }
    }

匯出Excel :
建立一個匯出基類

php artisan make:export Export 

匯出的資料來源也有很多種方式

  1. 匯出集合
namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;

class Export implements FromCollection
{
    /**
    * @return \Illuminate\Support\Collection
    */

    public function __construct($invoices)
    {
        $this ->invoices = $invoices;
    }
    public function collection()
    {
        return $this->invoices->all();
    }
}
  1. 控制器程式碼
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class test extends Controller
{
    //
    public function testExport(){
        $test = new \App\test;
        return  \Excel::download(new \App\Exports\Export($test), 'users.xlsx');
    }

}

https://www.cmfac.com 這是我的站~

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章