본문 바로가기

프로그래밍/이것저것 일하면서

AbstractExcelView 를 쓰지 마세요. 대신.. -Spring Boot 엑셀 다운로드 구현

반응형

Spring 프로젝트에서 엑셀 다운로드를 구현할 때 아파치 poi를 사용하여 파일을 만들고 직접 response에 쓸 수도 있지만, ViewResolver를 구현하는 것이 여러모로 편리하다.

그런데 최근에 작성한 코드를 수정해 달라는 요청을 받고 열어보니 AbstractExcelView를 사용한 코드를 보았다. AbstractExcelView는 이미 @Deprecated 된 메소드로써, 다른 것을 사용하는 것이 좋다.

결론

각각 다음 것을 사용하면 된다.

  • xls(hssf): AbstractXlsView - 엑셀 2003 (.xls) / 최대 65,535행
  • xlsx(xssf): AbstractXlsxView - 엑셀 2007 (.xlsx) / 최대 1,048,576행
  • xlsx streaming(sxssf): AbstractXlsxStreamingView xssf와 같은데 쓰기 전용이라 기존 엑셀 읽지 못함, 대용량 파일 생성할 때는 이걸 사용

주의사항

아파치 poi에서 hssf는 엑셀 2003 버전이며 65,535행 까지만 생성 가능하다. XSSF는 엑셀2007 버전(.xlsx)이며 약 백만 조금 넘게 생성 가능하다. 단, 많은 건을 써야할 때는 XSSF의 스트리밍 API인 SXSSF를 사용해야 OutOfMemory를 막을 수 있다. 대신 SXSSF를 사용하면 기존 파일을 읽는 것은 못한다. 쓰기 전용 API이기 때문이다.

반응형

개발자가 그리는 인스타툰 팔로우하세요!