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 |