웹개발 관련

[JAVA] poi를 이용하여 엑셀 다운

반응형

poi 라이브러리 다운 후 아래와 같이 작성

 

 

 

Date today = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

String fileName = "memberList"+sdf.format(today)+".xlsx";

String sheetName = "ExcelList";

 

// 워크북 생성

XSSFWorkbook workBook = new XSSFWorkbook(); 

 

SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

List<MemberRS> list = memberService.getMemberList(condition);

 

if(list != null){

// 워크 시트 생성

XSSFSheet sheet = workBook.createSheet(sheetName);

 

// 로우생성

XSSFRow row = sheet.createRow(0);

// 셀 생성

row.createCell(0).setCellValue(new XSSFRichTextString("회원 명단"));

row = sheet.createRow(1);

row.createCell(0).setCellValue(new XSSFRichTextString("회원번호"));

row.createCell(1).setCellValue(new XSSFRichTextString("닉네임"));

row.createCell(2).setCellValue(new XSSFRichTextString("타입"));

 

// list 만큼 로우 생성

for (int i = 0; i < list.size(); i++) {

row = sheet.createRow(i+2);

row.createCell(0).setCellValue(list.get(i).getMember().getSeq());

row.createCell(1).setCellValue(new XSSFRichTextString(list.get(i).getMember().getNickname()));

row.createCell(2).setCellValue(new XSSFRichTextString(list.get(i).getMember().getType()));

}

}

 

 

ServletOutputStream sos = null;

try {

String contentType = "application/octet-stream";

  sos = res.getOutputStream();

res.setContentType(contentType);

res.setHeader("Content-Type", contentType);

     // 파일명 설정

res.setHeader("Content-Disposition", "attachment;filename=" + fileName + ";");

res.setHeader("Content-Transfer-Encoding", "binary");

res.setHeader("Pragma", "public");

res.setHeader("Expires", "0");

res.setHeader("Cache-Control", "max-age=0");

     // 파일로 작성

workBook.write(sos);

sos.flush();

} catch (FileNotFoundException e) {

e.printStackTrace();

}finally {

if (sos != null) {

sos.close();

}

}

반응형