ExcelService 이용 문의
- 작성자 :
- 질*
- 작성일 :
- 2019-03-07 16:50:39
- 조회수 :
- 1,346
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요. poi를 이용하여 구현되어 있는 전자정부 프레임워크의 AbstractPOIExcelView를 이용하던 중 오류사항으로 보이는 부분이 있어서 문의드립니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:excel
위 링크 페이지에서 Excel 다운로드의 샘플소스를 참고하여 ExcelView를 만들었습니다. AbstractPOIExcelView를 상속받아서 buildExcelDocument를 구현하였습니다. 엑셀파일은 잘 만들어지는데 엑셀파일의 파일명을 지을 때 버그로 보이는 부분이 있습니다.
AbstractPOIExcelView의 renderMergedOutputModel(...) 메서드를 통해 최종적으로 엑셀 파일이 만들어지는데요, filename 이라는 항목이 model에 담겨있으면 그 filename으로 파일명이 생성되고 아니면 제가 지은 엑셀뷰 관련 bean id명인 ExcelView라는 이름으로 저장이 되게 됩니다.
그런데 한글로 filename을 넘기면 제가 호출한 엑셀 다운로드 url(예를 들어 boardlistexcel.do)로 저장이 되더군요. 혹시나 싶어서 영어로 filename을 model에 담아 보내니 그건 제대로 저장이 됩니다.
아마 한글 관련 처리가 안 되어 있어서 그런거 같은데 renderMergedOutputModel 메서드가 final로 선언이 되어 있고 전자정부 프레임워크 고유 class 파일은 사용자가 임의로 수정하기 어려울 듯 한데 해결 방법이 있을까요?
+++
파일명으로 몇 가지 케이스를 정하여 테스트를 해보니,
1. only 한글 => 호출한 url이름으로 저장됨
2. only 숫자or영어 => 잘 저장됨
3. 한글+공백+숫자or영어 => 숫자or영어만 남고 저장됨
4. 한글_한글 => _(언더바)만 남고 저장됨
4. 한글+공백+한글 => 1번과 같음
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte3:fdl:excel
위 링크 페이지에서 Excel 다운로드의 샘플소스를 참고하여 ExcelView를 만들었습니다. AbstractPOIExcelView를 상속받아서 buildExcelDocument를 구현하였습니다. 엑셀파일은 잘 만들어지는데 엑셀파일의 파일명을 지을 때 버그로 보이는 부분이 있습니다.
AbstractPOIExcelView의 renderMergedOutputModel(...) 메서드를 통해 최종적으로 엑셀 파일이 만들어지는데요, filename 이라는 항목이 model에 담겨있으면 그 filename으로 파일명이 생성되고 아니면 제가 지은 엑셀뷰 관련 bean id명인 ExcelView라는 이름으로 저장이 되게 됩니다.
그런데 한글로 filename을 넘기면 제가 호출한 엑셀 다운로드 url(예를 들어 boardlistexcel.do)로 저장이 되더군요. 혹시나 싶어서 영어로 filename을 model에 담아 보내니 그건 제대로 저장이 됩니다.
아마 한글 관련 처리가 안 되어 있어서 그런거 같은데 renderMergedOutputModel 메서드가 final로 선언이 되어 있고 전자정부 프레임워크 고유 class 파일은 사용자가 임의로 수정하기 어려울 듯 한데 해결 방법이 있을까요?
+++
파일명으로 몇 가지 케이스를 정하여 테스트를 해보니,
1. only 한글 => 호출한 url이름으로 저장됨
2. only 숫자or영어 => 잘 저장됨
3. 한글+공백+숫자or영어 => 숫자or영어만 남고 저장됨
4. 한글_한글 => _(언더바)만 남고 저장됨
4. 한글+공백+한글 => 1번과 같음
A
안녕하세요.
표준프레임워크센터 입니다.
처리하시는 부분에
HttpServletResponse response를 파라미터로
전달 받을 듯 합니다.
함수내에서 약간 수정하시면 되는데
다음 코드를 참고하여
IE와 그외 크롬브라우저등을 구분하여 처리하시면
한글 문제가 해결될것으로 예상됩니다.
String filename = "myFIle_내파일";
String charSet = "UTF-8";
String WBtype = "IE";
String encodedFilename = "";
if (WBtype.equals("IE")) {
encodedFilename = "Content-Disposition: attachment; filename="+URLEncoder.encode(filename, charSet).replaceAll("\\+", "%20");
} else {
encodedFilename = "Content-Disposition: attachment; filename*="+charSet+"''"+URLEncoder.encode(filename, charSet);
}
response.setContentType("Application/Msexcel");
response.setHeader("Content-Disposition", encodedFilename);
감사합니다.
표준프레임워크센터 입니다.
처리하시는 부분에
HttpServletResponse response를 파라미터로
전달 받을 듯 합니다.
함수내에서 약간 수정하시면 되는데
다음 코드를 참고하여
IE와 그외 크롬브라우저등을 구분하여 처리하시면
한글 문제가 해결될것으로 예상됩니다.
String filename = "myFIle_내파일";
String charSet = "UTF-8";
String WBtype = "IE";
String encodedFilename = "";
if (WBtype.equals("IE")) {
encodedFilename = "Content-Disposition: attachment; filename="+URLEncoder.encode(filename, charSet).replaceAll("\\+", "%20");
} else {
encodedFilename = "Content-Disposition: attachment; filename*="+charSet+"''"+URLEncoder.encode(filename, charSet);
}
response.setContentType("Application/Msexcel");
response.setHeader("Content-Disposition", encodedFilename);
감사합니다.