WORK/JAVA

jsp 엑셀다운로드 받기

im 수캥이 2023. 11. 29. 13:06

jsp내용을 그대로 엑셀로 다운받고자 할 때 사용하면 된다.

jsp 내용

샘플로 만든 내용이라 임의로 form 을 만들어 전송 했다.

<script type="text/javascript">
    function excelDownLoad(){
        let newForm = $('<form></form>');
        newForm.attr("name""newForm");
        newForm.attr("method""post");
        newForm.attr("action""/excelDownLoad.do");
 
        newForm.appendTo('body');
        newForm.submit();
    }
</script>
 
<html>
    <button type="button" onclick="excelDownLoad();">엑셀 다운로드 </button>
</html>
cs

Controller 내용

각자 사용하는 프레임워크에 맞춰 변경하여 사용하면 된다.

@requestMapping("/excelDownLoad.do")
public ModalAndView excelDown(){
    HashMap<String, Object> model = new HashMap<>();
    model.put("name""홍길동");
 
    return this.direct("/excelDown.jsp", model);
}
 
cs

jsp 내용

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>엑셀 다운로드</title>
</head>
<body>
<%
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition""inline; filename=ExcelDown.xls");
%>
    <table border="1">
        <thead>
            <tr>
                <th style="background-color:#FF3366">번호</th>
                <th>제목</th>
                <th>작성자</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>테스트</td>
                <td>${name}</td>
            </tr>
        </tbody>
    </table>
</body>
</html>
cs

 

jsp에서의 엑셀 다운로드는 xlsx 지원은 되지 않고 xls 만 지원된다고 한다. (엑셀2003 버전)

ContentType 으로 문서를 만들 때  BinaryView를 사용하게 되는데 BinaryView가 Excel2003만 고려되어 있어서 라고 한다.

SheetJS의 라이브러리를 사용하면 가능하다고도 하는데 추후 테스트 하고 다시 포스팅 해 봐야겠다.