/springboot-excel-practice

스프링부트+엑셀 다운로드 구현

Primary LanguageJava

엑셀 다운로드 구현 예제

테스트 링크

  • 로컬 실행시 http://localhost:8080/todo/excel
    • 엑셀 다운로드 기능 구현에 주안점을 둔 프로젝트로 api는 전체 데이터를 다운로드하는 것으로 간단히 구현하였습니다.

클래스 다이어그램

클래스 다이어그램

CellType

  • CellType이라는 이넘을 설정해두고, 이를 이용해 엑셀 스타일링을 수행하도록 구현하였습니다.
  • ExcelColumnInfo 이넘 구현체 클래스에서 각 컬럼 정보가 CellType 데이터를 멤버로 갖습니다.

ExcelColumnInfo

  • 엑셀 파일을 만들 데이터의 메타 데이터 정보를 가진 이넘 클래스가 구현할 인터페이스입니다.
  • 엑셀 파일을 작성하는 로직의 추상화를 위해 해당 인터페이스를 구현하게 됩니다.
    • 인터페이스의 메서드에서 확인할 수 있듯이 해당 인터페이스 구현체는 엑셀 파일에서 작성될 헤더명, dto 클래스의 해당 컬럼 데이터의 속성명, 셀 타입, 순서, 너비 정보를 갖게 됩니다.

CellStyleStore

  • CellType 별 스타일 객체를 캐싱 및 관리하는 객체입니다.
  • 파일별로 생명주기를 갖도록 구현 (SimpleExcelFile에서 구상composition) 하였습니다.

SimpleExcelFile<E, T>

  • 제네릭을 활용해 작성된 엑셀 파일 작성 구현체입니다.
    • E 클래스는 ExcelColumnInfo 인터페이스를 구현한 이넘 클래스를 가리킵니다.
    • T 클래스는 엑셀로 작성된 데이터 DTO 클래스를 가리킵니다.