반응형
구성 : 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는 아래 링크에 아주 잘 설명 되어있음!
반응형
'Framework > Laravel Framework' 카테고리의 다른 글
[Laravel] api.php 와 web.php의 차이점? (0) | 2021.07.08 |
---|---|
[Laravel] Dropzone.js 사용하기 (0) | 2021.06.16 |
[Laravel] JWT API Server 구축하기(2) (0) | 2021.05.25 |
[Laravel] JWT API Server 구축하기(1) (0) | 2021.05.21 |
[Laravel] Window10 사용 시 작업 스케줄러 적용하기 (0) | 2021.01.26 |
댓글