728x90
반응형
액셀 로딩바를 해결했는데
이건 또 뭐람
https://soobindeveloper8.tistory.com/390
위에서처럼 제대로 할 일을 해주는데 에러는 왜 뜨는 것일까
java.io.IOException: Cannot write data, document seems to have been closed already
데이터를 쓸 수 없습니다. 문서가 이미 닫혀 있는 것 같습니다.
블로그 삽질
검색어 : getOutputStream Cannot write data, document seems to have been closed already
아래에서 해결 !
입출력 닫는 다양한 예제
아래 처럼 바꾸고 성공 !
@Override
protected void buildExcelDocument( Map<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) {
createExcel(workbook, model);
response.setContentType("ms-vnd/excel");
response.setHeader("Content-Disposition", "attachment;filename=example.xlsx");
try {
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
원래는 한 줄로 끝내려 들었는데
workbook.write(response.getOutputStream());
getOutputStream 을 깊숙히 들어가보니까
- ServletOutputStream 그릇에 responce 의 getOutputStream 을 담고
- workbook 에 쓰고
- ServletOutputStream 그릇을 다썼으니까 씻어서 정리한다는 의미로 닫아줘야 한다.
내 순서는 너무 뒤죽박죽이었다.
변경전
더보기
workbook.write(response.getOutputStream());
workbook.close();
변경후
더보기
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
out.flush();
728x90
반응형
'개발중 > troubleshooting' 카테고리의 다른 글
Git 대소문자 변경 Commit 🌊 (0) | 2021.05.09 |
---|---|
Visual Studio 'M' 표시 없애기 (0) | 2021.05.09 |
Bean null 에러 (0) | 2021.04.28 |
org.springframework.context.ApplicationContextException: Unable to start web server; 에러 해결 (0) | 2021.04.28 |
JAVA MYSQL 연동 중 SSL 에러 (0) | 2021.04.23 |