반응형
POI 를 이용해 엑셀 다운로드기능을 개발할 때, 파일명을 지정하지 않으면 uri의 끝부분을 리턴한다. 다만 이렇게 될 경우 확장자도 붙지 않는다.
다음 코드를 확인해 보자
...
@GetMapping("/api/excel/testHangle")
public void textExcel(HttpServletResponse response) throws IOException {
Workbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet();
int rowIndex = 0;
Row headerRow = sheet.createRow(rowIndex++);
Cell headerCell1 = headerRow.createCell(0);
headerCell1.setCellValue("이름");
Row bodyRow1 = sheet.createRow(rowIndex++);
Cell cell1 = bodyRow1.createCell(0);
cell1.setCellValue("아이유");
Row bodyRow2 = sheet.createRow(rowIndex++);
Cell cell2 = bodyRow2.createCell(0);
cell2.setCellValue("강혜연");
String fileName = "테스트 한글.xlsx";
String outputFileName = fileName;
response.setHeader("Content-Disposition", "attachment; fileName=\"" + outputFileName + "\"");
workbook.write(response.getOutputStream());
workbook.close();
}
...
다운로드 파일명을 띄어쓰기 하는 경우 URL의 끝 부분인 testHangle.zip 로 저장되었다. 만약 띄어쓰기가 없는경우 ___.xlsx 등 한글이 깨져서 다운로드 된다.
사실상 인코딩의 문제라 다음 한줄만 추가하면 된다.
...
String fileName = "테스트 한글.xlsx";
String outputFileName = new String(fileName.getBytes("KSC5601"), "8859_1");
response.setHeader("Content-Disposition", "attachment; fileName=\"" + outputFileName + "\"");
...
다시 다운로드를 시도해보면 제대로 다운로드 되는 것을 확인할 수 있다.
끝.
반응형
'공부 > 프로그래밍' 카테고리의 다른 글
[spring security] token 요청 시 에러 Exception 핸들링하기(/oauth/token 에러, ControllerAdvice 적용안됨) (0) | 2021.02.15 |
---|---|
[aws] lambda@edge 를 이용해 이미지 리사이즈 하기(cloud9 사용) (0) | 2021.02.12 |
[aws] lambda@edge 설정 중 파라미터(query string)이 넘어오지 않는 경우(이미지 리사이징) (0) | 2021.02.08 |
[springboot] swagger 설정 & 사용법 (1) | 2021.02.04 |
[spring] 객체 내 객체에 @Valid 점검하기 (0) | 2021.01.25 |
댓글