반응형
PHP의 프레임워크인 Laravel에서 Excel을 다루는 방법을 알아봅시다.
PHP에서 Excel 파일을 다루기 위해서는 PHPExcel이라는 패키지를 자주 사용하지만
PHP 7.x 버전부터는 PHPExcel과 호환되지 않기 때문에 사용할 수 없습니다.
하지만 Laravel의 경우 Laravel Excel이라는 패키지를 이용해 Excel을 조작할 수 있습니다.
버전 정보
php 7.4.13
larave 6.20.11
maatwebsite 3.1
설치
1. composer를 이용한 두 가지 방법이 있습니다.
- composer.json파일의 require 항목에 다음 내용을 추가하고 update를 실행합니다.
"require": {
"maatwebsite/excel": "^3.1"
}
composer update
- 커맨드에서 실행할 경우 아래의 명령어를 입력합니다.
composer require maatwebsite/excel
2. config/app.php 파일에 providers와 aliases를 추가합니다.
'providers' => [
/*
* Package Service Providers...
*/
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
3. vendor publish 명령을 실행합니다. 실행을 하면 config/excel.php라는 새 파일이 생성됩니다.
php artisan vendor:publish
Excel 가져오기
make 명령어를 실행하여 app/Imports 폴더와 UsersImport 파일을 생성합니다.
php artisan make:import UsersImport --model=User
App/Imports/UsersImport.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]),
]);
}
}
Controller에서 UsersImport 호출하기
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
public function import()
{
Excel::import(new UsersImport, 'users.xlsx');
return redirect('/')->with('success', 'All good!');
}
}
위와 같이 작성하면 users.xlsx에 작성된 name, email, password 값을 User모델에 입력할 수 있습니다.
Excel 내보내기
make 명령어를 실행하여 app/Exports 폴더와 UsersExport 파일을 생성합니다.
php artisan make:export UsersExport --model=User
app/Exports/UsersExport.php파일의 소스코드입니다.
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
public function collection()
{
return User::all();
}
}
Controller에서 UsersExport 호출하기
<?php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
위와 같이 작성하면 User모델에 있는 데이터 전부를 users.xlsx 파일에 출력할 수 있습니다.
반응형
'PROGRAMMING > PHP' 카테고리의 다른 글
PHP array_merge() 배열 합치기 배열 병합하기 (0) | 2023.06.26 |
---|---|
PHP로 만나이 계산하기: 생년월일과 기준일로 나이 계산하기 (0) | 2023.06.13 |
Laravel storage 심볼릭 링크 파일 접속 (0) | 2023.05.18 |
php Carbon 사용법 시간계산 현재시간 laravel datetime (0) | 2023.03.10 |
php 유니크id 생성하기 uniqid() (0) | 2023.03.10 |
댓글