Laravel9 라라벨 난수 액셀 다운로드 (Laravel-Excel)

2022. 8. 22. 10:53· PHP/Laravel
목차
  1. 라라벨 공부
  2. 개요
  3. 시작

라라벨 공부

바로가기

 


개요

이전 글에서 사용한 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
  1. 라라벨 공부
  2. 개요
  3. 시작
'PHP/Laravel' 카테고리의 다른 글
  • Laravel9 이미지 업로드 (with Dropzone) 2부 : Index & Destroy & Ajax
  • Laravel9 이미지 업로드 (with Dropzone) 1부 : Setting & Create & Image Upload
  • Laravel9 라라벨 액셀 다운로드 (Laravel-Excel)
  • Laravel9 라라벨 액셀 다운로드 (Fast-Excel)
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (193)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (10)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
Laravel9 라라벨 난수 액셀 다운로드 (Laravel-Excel)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.