티스토리 뷰

Framework/Laravel Framework

[Laravel] Excel Import 사용하기

사용자 원동호 2021. 6. 16. 10:07

구성 : Laravel Framework 8.46

 

https://github.com/Maatwebsite/Laravel-Excel

위 패키지를 이용하여 진행해 보겠다.

 

1. 패키지 설치

composer require maatwebsite/excel

2.  Provider, alias 추가

// config/app.php

'providers' => [
    .
    .
    .
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

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

3. vendoir publish 실행

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

4. Import 파일 생성

// app/Import/DevicesImport 파일이 생성된다.
php artisan make:import DevicesImport --model=Device
<?php

namespace App\Imports;

use App\Models\Device;
use Maatwebsite\Excel\Concerns\ToModel;

class DevicesImport implements ToModel {
    private $data; 
	
    // 생성자 함수를 구현하면 컨트롤러에서 넘어온 값을 받을 수 있다.
    public function __construct($data) {
        $this->data = $data; 
    }

    public function model(array $row) {
    	// Device Model에 엑셀의 A열 Y축 데이터를 읽어 주입한다.
        return new Device([
            'mac'     => $row[0],
            'description'    => $this->data,
        ]);
       
    }

}

5. Controller 구성

<?php

namespace App\Http\Controllers\Web\v1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Imports\DevicesImport;
use Maatwebsite\Excel\Facades\Excel;


class DeviceController extends Controller {
    public function store(Request $request) {
        try {
            /* 
             * basic -> Excel::import(import Class, Excel File);
             * 아래는 Import Class에 값을 넘기기 위해 변수를 넣어준다.
             */
            Excel::import(new DevicesImport("TEST"),$request->file('file'));
        } catch (Exception $e) {
            return "fail";  
        }
        return "success";
    }

}

 

포스트맨으로 실행해보면 잘 동작하는것을 확인할 수 있다. 더 많은 document는 아래 링크에 아주 잘 설명 되어있음!

https://docs.laravel-excel.com/3.1/imports/model.html

댓글
댓글쓰기 폼