매번 엑셀에 스타일을 부여해서 데이터를 넣기엔 굉장히 번거롭다
엑셀로 양식을 만들어 두고 빈칸에 데이터를 넣는 방식으로 만들어봤는데
코드도 간결하고, 엑셀 파일도 가독성이 좋아 방법을 공유해보고자 한다!
방법도 매우 간단하고 쉬움!
1. 엑셀 양식 만들기
나는 샘플로 식단 표를 만들었다
양식이니만큼 배경색이나 테두리, 폰트 조절도 살짝 해주었다
이렇게 만든 엑셀 파일 sample.xlsx 을 webapp의 excel 폴더에 넣어준다
2. webapp/excel 에 엑셀폼 파일 넣기
3. 컨트롤러 부분 코딩
@RequestMapping("/sample.do")
public void sample(HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
String filename = "";
request.setCharacterEncoding("EUC-KR");
String formPath = request.getServletContext().getRealPath("excel/sample.xlsx"); //양식 패스 가져오기
InputStream fis = new FileInputStream(formPath);
XSSFWorkbook form_wb = new XSSFWorkbook(fis);
XSSFSheet form_sheet = form_wb.getSheetAt(0);
//양식에 넣어줄 데이터
String breakfast = "미역국";
String lunch = "돈까스";
String dinner = "삼겹살";
//엑셀 폼에 넣기 (로우와 셀 주의!!!)
form_sheet.getRow(3).createCell(1).setCellValue(breakfast);
form_sheet.getRow(3).createCell(2).setCellValue(lunch);
form_sheet.getRow(3).createCell(3).setCellValue(dinner);
//파일 이름, 형식, 헤더 설정
filename = "today_meal.xlsx";
response.setContentType("ms-vnd/excel;charset=EUC-KR");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
form_wb.write(response.getOutputStream());
form_wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
샘플로 미역국, 돈까스, 삼겹살을 데이터로 넣어주었는데
DB에서 받아온 데이터들을 넣어줄 수도 있다
데이터를 넣을 때 행과 열에 주의해야하는데
엑셀에서 A B C D는 cell에 해당하고 0 1 2 3 순서로 매겨진다
또, 1 2 3 4는 row에 해당하고 0 1 2 3 순서로 매겨진다
이 부분에 유의해서 getRow.createCell 부분을 작성하도록 하자
이제 sample.do 로 들어가보면 설정해준 파일명으로 엑셀이 다운로드 된다
파일을 열면 컨트롤러에서 넣어준 데이터가 양식에 맞게 들어간 것을 확인할 수 있다
이 방식을 활용하면 jsp 쪽에서 버튼을 만들 수 도 있고
DB의 데이터를 엑셀에 뿌려줄 수도 있어서 유용함!!
간단! 끝!
728x90
반응형