the Java API for Microsoft Documents 을 지향하는Apache POI를 이용한 엑셀 생성 및 다운로드 기능 구현을 해보겠다.
현재 배포중인 버전에 대해서는 Maven central Repository 를 통해서 그때그때 확인하기 바란다.
the Java API for Microsoft Documents 을 지향하는Apache POI를 이용한 엑셀 생성 및 다운로드 기능 구현을 해보겠다.
현재 배포중인 버전에 대해서는 Maven central Repository 를 통해서 그때그때 확인하기 바란다.
1. 의존성 추가
1.1. pom.xml
org.apache.poi poi 3.14
org.apache.poipoi3.14
1.2. build.gradle
compile ('org.apache.poi:poi:3.14')
compile ('org.apache.poi:poi:3.14')
2. 간단한 테스트
POI에 대한 의존성을 추가했으면 간단한 예제를 구현하여 엑셀과 관련된 WorkBook(=file), Sheet, Row, Cell 에 대한 기능을 확인하자.
@Slf4j
POI에 대한 의존성을 추가했으면 간단한 예제를 구현하여 엑셀과 관련된 WorkBook(=file), Sheet, Row, Cell 에 대한 기능을 확인하자.
@Slf4j
3. 스프링MVC 에서 구현
스프링에서 제공하던 AbstractExcelView
는 4.2 에서 Deprecated되었다. AbstractXlsView
를 사용해볼까 했는데 apache POI 3.14 버전에서는 XSSFWorkbook
관련한 패키지가 사라져서 쓸 수 없다. 3.16 버전에는 SXSSFWorkbook
관련 패키지가 추가될 것으로 보이니 3.16 쓸 때는 SXSSFWorkbook
사용을 고려해보자. AbstractXlsView
를 사용하도록 하자.
스프링에서 제공하던 AbstractExcelView
는 4.2 에서 Deprecated되었다. AbstractXlsView
를 사용해볼까 했는데 apache POI 3.14 버전에서는 XSSFWorkbook
관련한 패키지가 사라져서 쓸 수 없다. 3.16 버전에는 SXSSFWorkbook
관련 패키지가 추가될 것으로 보이니 3.16 쓸 때는 SXSSFWorkbook
사용을 고려해보자. AbstractXlsView
를 사용하도록 하자.
3.1. AbstractXlsView
을 구현
// 공통적으로 사용할 수도 있고... 특정 기능에 따라 뷰이름을 구분지어 사용할 수 있겠다.
org.springframework.web.servlet.view.document
패키지에AbstractXlsView
와 AbstractPdfView
가 있다. AbstractXlsxView
는 AbstractXlsView
를 확장했는데 import org.apache.poi.xssf.usermodel.XSSFWorkbook
를 필요로 한다. 그런데 POI 3.14
에는 org.apache.poi.xssf
패키지가 빠져있다. 히스토리는 모르겠다.
// 공통적으로 사용할 수도 있고... 특정 기능에 따라 뷰이름을 구분지어 사용할 수 있겠다.
org.springframework.web.servlet.view.document
패키지에AbstractXlsView
와 AbstractPdfView
가 있다. AbstractXlsxView
는 AbstractXlsView
를 확장했는데 import org.apache.poi.xssf.usermodel.XSSFWorkbook
를 필요로 한다. 그런데 POI 3.14
에는 org.apache.poi.xssf
패키지가 빠져있다. 히스토리는 모르겠다.
3.2. Controller 에서 view 를 반환
@Controller
이렇게 하고 이 컨트롤러에 대한 링크를 제공하면 다운로드 처리가 완료된다.
@Controller
이렇게 하고 이 컨트롤러에 대한 링크를 제공하면 다운로드 처리가 완료된다.
4. 정리
엑셀에 필요한 정보를 담기 위해서는 여전히 많은 노력이 필요하다. 뭐 그래도 어떤 데이터들을 출력할지만 정의하면 비교적 처리가 수월해진다.
엑셀에 필요한 정보를 담기 위해서는 여전히 많은 노력이 필요하다. 뭐 그래도 어떤 데이터들을 출력할지만 정의하면 비교적 처리가 수월해진다.
'Java > Framework & Libs' 카테고리의 다른 글
[spring] 어제의 삽질, ViewController 설정 때문에... (2) | 2016.09.13 |
---|---|
untitled Preview java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed (0) | 2016.09.11 |
[spring security] 스프링 시큐리티 + OTP 를 이용한 2단계 인증 예제 (3) | 2016.06.19 |
[thymeleaf] dialect 정의하기 (0) | 2016.06.10 |
[스프링] 컨트롤러 내에서 NullPointException 발생, @ControllerAdvice로 잡은 것이 안먹히네 (0) | 2016.01.13 |