이번 포스팅은 JSP 화면에 보이는 데이터를 엑셀 파일로 저장하는 방법에 대하여 알아보도록 하겠습니다.
JSP 화면에서 검색 조건을 제목으로 하여 검색하여 찾은 데이터를 리스트 형태로 조회하는 화면이 있을 때에 <EXCEL 파일 저장>이라는 버튼을 클릭하면 조건으로 들어가는 제목을 파라미터로 갖고 엑셀파일을 보여줄 수 있는 pop-up대용의 JSP화면으로 보내줍니다.
#. list.jsp
<%@ page contentType="text/html;charset=euc-kr" %>
<html>
.....
function toXLS() {
var address = "/jsp/excel.jsp?title=타이틀&file_name=리스트.xls";
location.href = address;
}
.....
<body>
.....
<a href="javascript:toXLS()"><strong>EXCEL 파일저장</strong></a>
.....
</body>
</html>
아래는 중요한 excel.jsp인데 JSP화면의 설정 코드를 눈여겨보아야 합니다.
#. excel.jsp
<%@ page contentType="application/vnd.ms-excel;charset=euc-kr" %>
===> contentType를 반드시 위와 같이 정의해주어야 원하는 결과를 얻을 수 있습니다.
<%
String file_name = request.getParameter("title");
response.setHeader("Content-Disposition", "attachment; filename=""+file_name+"";");
===> 저장할 시에 기본적으로 설정되는 파일명을 지정하고(여기서는 order_list.xls)
반드시 attachment로 설정을 해야 파일 열기, 저장 중에 선택하는 메시지가 뜹니다.
response.setHeader("Content-Description", "JSP Generated Data");
===> 정확히 어떤 정의였는지는 자세히 기억이 나지 않지만 필수적으로 설정해야 합니다.
String title = request.getParameter("title");
... ( title파라미터를 이용하여 DB에서 해당 목록을 ResultSet으로 받아온다. )
%>
<html>
<head>
<title>엑셀파일변환</title>
</head>
<body bgcolor=white>
<table border=1>
<tr bgcolor="#CACACA">
<th>지시일자</th>
<th>완료일</th>
<th>담당자</th>
<th>현 황</th>
<th>제 목</th>
</tr>
<%
while(rs.next()) {
%>
<tr>
<td><%=rs.getString("ord_date")%></td>
<td><%=rs.getString("cmp_date")%></td>
<td><%=rs.getString("charge_name")%></td>
<td><%=rs.getString("state_name")%></td>
<td><%=rs.getString("subject")%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
이렇게 화면이 만들어지고 <EXCEL 파일 저장>을 클릭하게 되면 order_list.xls (지정한 파일명)를 현재 위치에서 열 것인지 저장할 것인지를 묻는 창이 뜹니다.
여기에서 저장을 하게 되면 이름을 바꿔서 저장이 가능하고, 열기를 선택하면 excel.jsp에 구성된 내용들이 현재 화면에 엑셀 형식으로 보이게 됩니다.
처음 참고자료를 뒤졌을 때 excel.jsp의 attachment 부분이 다른 방식으로 지정되면 곧바로 엑셀 파일 열기가 실행되어 난감했던 기억이 납니다.
반드시 attachment을 해야만 저장을 묻는다는 것을 기억해야 합니다.
참고 : http://scblood.egloos.com/2542763
'Development > Web' 카테고리의 다른 글
[Web] 뷰 컴포넌트 통신 (0) | 2022.09.19 |
---|---|
[Web] 뷰 컴포넌트 (0) | 2022.09.18 |
[Web] 뷰 인스턴스 라이프 사이클 (0) | 2022.09.18 |
[Web] 뷰 인스턴스 (0) | 2022.09.18 |
[Web] JSP / Servlet/ Java 현재 경로 알아내기 (0) | 2020.04.08 |