POI (Excel) + Spring + JSP
POI lib 을 사용한 excel 파일 생성 및 다운로드
1. dependency 추가(HSSF 예제)
| 1 2 3 4 5 | <dependency>     <groupId>org.apache.poi</groupId>     <artifactId>poi</artifactId>     <version>3.15</version> </dependency> | cs | 
* HSSF이외에 XSSF, SXSSF 라이브러리 존재.
HSSF : excel 의 .xls 파일 포맷을 위한 POI
XSSF : .xls 및 .xlsx 파일 포맷을 위한 POI
SXSSF : 이미지 및 대용량 엑셀 데이터를 위한 POI
SXSSF 의 경우 HSSF, XSSF에 비해 성능이 떨어지는 거라는 글을 봤음, 대용량 처리가 아닌 이상 XSSF 혹은 HSSF 사용

2. 엑셀 파일 생성(HSSF 사용 예제)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | @Override     public HSSFWorkbook listExcelDownload(VO param) throws Exception {         HSSFWorkbook workbook = new HSSFWorkbook();         HSSFSheet sheet = workbook.createSheet("엑셀시트명");         HSSFRow row = null;         HSSFCell cell = null;         param.setPager(false);         param.setNullText(NULL_TEXT);         param.setSeparator(DELI_EXCEL);         List<VO> list = Dao.selectList(param);         row = sheet.createRow(0);         String[] headerKey = {"칼럼1", "칼럼2", "칼럼3", "칼럼4"};         for(int i=0; i<headerKey.length; i++) {             cell = row.createCell(i);             cell.setCellValue(headerKey[i]);         }         for(int i=0; i<list.size(); i++) {             row = sheet.createRow(i + 1);             StbcsTaskHstVO vo = list.get(i);             cell = row.createCell(0);             cell.setCellValue(vo.getEx1());             cell = row.createCell(1);             cell.setCellValue(vo.getEx2());             cell = row.createCell(2);             cell.setCellValue(vo.getEx3());             cell = row.createCell(3);             cell.setCellValue(vo.getEx4());         }         return workbook;     } | cs | 
* HSSF lib 사용시
HSSFWorkbook 생성 > HSSFWorkbook에 HSSFSheet 생성 > HSSFSheet에 HSSFRow 생성 > HSSFRow에 HSSFCell 생성
* XSSF lib 사용시
흐름은 위와 동일, HSSF을 XSSF로만 바꿔주면 됨(ex: HSSFWorkbook >> XSSFWorkbook).
3. Controller (엑셀 다운로드)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | @RequestMapping(value="/exceldownload.do")     public void excelDownload( HttpServletRequest request ,HttpServletResponse response ,HttpSession session, VO param) throws Exception {         OutputStream out = null;         try {             HSSFWorkbook workbook = Service.listExcelDownload(param);             response.reset();             response.setHeader("Content-Disposition", "attachment;filename=stbcs_history.xls");             response.setContentType("application/vnd.ms-excel");             out = new BufferedOutputStream(response.getOutputStream());             workbook.write(out);             out.flush();         } catch (Exception e) {             logger.error("exception during downloading excel file : {}", e);         } finally {             if(out != null) out.close();         }         } | cs | 
4. jsp
| 1 2 3 4 5 6 7 8 9 | /* 엑셀다운로드 */ function downloadExcel(){     var f = document.frmSearch;     f.action = "/exceldownload.do";     f.submit();     return; } | cs | 
반응형
    
    
    
  'back > Spring Framework' 카테고리의 다른 글
| [Spring Fw] Spring property 설정 (0) | 2019.08.27 | 
|---|---|
| [Spring fw] Transaction 설정 및 주의사항 : 예상치 못한 롤백이 이루어 지는 경우, 롤백이 되지 않는 경우 확인해봐야 할 것 (1) | 2019.08.04 | 
| 스프링프레임워크 log4j2 설정 : Spring Framework + log4j 2 + slf4j + jboss/wildfly(ver 9) (0) | 2019.05.10 | 
| jar(lib) 동적 빌드 및 배포(profiles 사용) (0) | 2019.04.26 | 
| 스프링프레임워크 AOP를 사용한 로그 출력 : Spring + AOP + logger (0) | 2019.04.19 |