라라벨 공부
개요
이전 글에서 사용한 Laravel Excel 라이브러리를 사용해 난수 엑셀 생성기를 만들어 봅시다.
Laravel Excel를 설치하지 않으셨다면 아래 글을 참고해주시기 바랍니다.
Laravel9 라라벨 액셀 다운로드 (Laravel-Excel)
개요 이전에 Fast-Excel 라이브러리를 이용해 액셀을 다운로드하여봤습니다 바로가기 하지만 사용해보니 다음과 같은 장점으로 기존에 쓰던 Laravel-Excel이 더 괜찮은 것 같습니다. - 매우 잘된 튜토
seung.tistory.com
시작
Controller와 Export 클래스를 만들어 줍시다.
php artisan make:controller RandomGeneratorController
php artisan make:export RandomGeneratorExport
라우팅 설정을 위해 web.php에 아래 코드를 추가해줍시다.
이번에는 view 연결 없이 주소 접근을 통해 간단하게 다운로드해보도록 합시다.
Route::get('random',[RandomGeneratorController::class,'export'])->name('random.export');
Controller는 아래와 같이 간단하게 만들어 줍시다.
<?php
namespace App\Http\Controllers;
use App\Exports\RandomGeneratorExport;
use Maatwebsite\Excel\Facades\Excel;
class RandomGeneratorController extends Controller
{
public function export()
{
$date = date('Y-m-d');
return Excel::download(new RandomGeneratorExport(), 'random_number_'.$date.'.csv');
}
}
이제 RandomGeneratorExport를 정의해줍시다.
<?php
namespace App\Exports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
class RandomGeneratorExport implements FromCollection
{
private $length, $count, $source;
/**
* @param $length int 문자길이
* @param $count int 난수 개수
* @param $source string 난수에 사용할 재료
*/
public function __construct($length = 8, $count = 10, $source = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){
$this->length = $length;
$this->count = $count;
$this->source = $source;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$randomNumbers = [];
for($index = 1; $index <= $this->count; $index++){
$randomNumbers[] = [$index, $this->getRandomNumber()];
}
return new Collection($randomNumbers);
}
/**
* 랜덤 난수 생성
* @return string
*/
public function getRandomNumber(){
$result = '';
for($index = 0; $index < $this->length; $index++){
$result .= str_shuffle($this->source)[0];
}
return $result;
}
}
생성자로 기본 설정을 넣어주었으나, 필요시 인스턴스화 할 때 전달 인자로 값을 쉽게 바꿀 수 있습니다.
Controller에서 아래와 같이 바꿀 경우 10자리의 난수를 100개 만들 수 있습니다.
[수정 전]
return Excel::download(new RandomGeneratorExport(), 'random_number_'.$date.'.csv');
[수정 후]
return Excel::download(new RandomGeneratorExport(10, 100), 'random_number_'.$date.'.csv');
주소를 /random으로 이동시 액셀을 다운로드할 수 있습니다
정리
Fast Excel가 속도는 훨씬 좋았으나 Laravel Excel이 역시 더 자유롭네요.
해당 포스트에서 만든 csv를 이용해 seeder을 통해 테이블에 저장하는 포스트를 올렸습니다.
참고해주세요, 바로가기
Laravel9 라라벨 csv 읽어서 저장하기(CSV seeding)
라라벨 공부 바로가기 개요 이전에 포스팅한 라라벨 난수 액셀 다운로드 포스트가 기억나시나요? 안 나면 다음 주소로 => 바로가기 Laravel9 라라벨 난수 액셀 다운로드 (Laravel-Excel) 라라벨 공부 바
seung.tistory.com
'PHP > Laravel' 카테고리의 다른 글
Laravel9 이미지 업로드 (with Dropzone) 2부 : Index & Destroy & Ajax (0) | 2022.08.30 |
---|---|
Laravel9 이미지 업로드 (with Dropzone) 1부 : Setting & Create & Image Upload (0) | 2022.08.29 |
Laravel9 라라벨 액셀 다운로드 (Laravel-Excel) (0) | 2022.08.19 |
Laravel9 라라벨 액셀 다운로드 (Fast-Excel) (0) | 2022.08.19 |
Laravel 9 CRUD 예제 4부 : 유효성 검사(Validation) (0) | 2022.08.11 |