[DEV] 기록

[SXSSFWorkbook] 엑셀 드롭다운 셀 생성하는 방법

구데타마 2022. 4. 20. 10:08

개요

기존에 Excel 생성 및 다운로드 관련 게시글을 여럿 공유했었습니다.

https://jaimemin.tistory.com/2069

 

[SpringBoot] 대용량 엑셀 파일 생성 및 다운로드 삽질기

개요 작년에 이어 올해도 엑셀 파일 생성 및 다운로드 기능을 담당하게 되었습니다. https://jaimemin.tistory.com/1889 [SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook 개요 기존에 Excel 생성 및 다운..

jaimemin.tistory.com

https://jaimemin.tistory.com/1889

 

[SpringBoot] 대용량 엑셀 다운로드를 위한 SXSSFWorkbook

개요 기존에 Excel 생성 및 다운로드 기능을 구현하는 코드를 공유했었습니다. https://jaimemin.tistory.com/1768 [SpringBoot] Excel 생성 및 다운로드 개요 ElasticSearch로 조회한 목록들을 엑셀로 다운로드할..

jaimemin.tistory.com

 

이번에는 특정 셀을 드롭다운 셀로 구현해달라는 요구사항을 받아 구현해봤습니다.

 

코드

기존 코드들은 모두 비슷하고 수정된 ExcelView.java만 공유하겠습니다.

 

ExcelView.java


 

* line 152 ~ 163 주목

* String[] 타입으로 넘길 경우 드롭다운 셀 생성하고 value는 String 배열의 첫 번째 인자로 설정

* 드롭다운 셀 같은 경우 monitorjbl님이 제공해주신 excel-streaming-reader로 재구성하는 방법이 없는 것 같아 XSSFWorkbook으로 파일을 열어 다운로드 해주는 방식으로 구현

-> row 개수가 많아질 경우 heap 메모리 초과 에러 발생 가능하므로 row 개수가 적은 경우 위와 같은 방식으로 적용하는 것이 중요

-> 참고 링크를 확인해보면 MS excel의 한계로 드롭다운 셀 개수가 많으면 파일 자체가 깨짐

-> 결론: row 개수가 작은 엑셀에 대해서만 해당 코드 참고

 

참고

https://stackoverflow.com/questions/56865788/poi-writes-corrupted-xlsx-when-adding-large-number-of-validationdata-in-a-sheet

 

POI writes corrupted .xlsx when adding large number of ValidationData in a sheet

I want to write a large .xlsx file(50K rows) using POI in JAVA. I expect each row to contain multiple drop-down cells. The code works fine when the number of rows is less than 30K but writes a corr...

stackoverflow.com

 

반응형