티스토리 뷰


   jsp 파일에 있는 표나 글씨 등을 엑셀 혹은 워드 파일로 다운로드/실행하는 방법이다.




<%@ page language="java" contentType="application/vnd.ms-excel;charset=UTF-8" pageEncoding="UTF-8"%>


<%-- <%@ page language="java" contentType="application/vnd.word;charset=UTF-8" pageEncoding="UTF-8"%> --%>


<%-- <%@ page language="java" contentType="application/hwp;charset=UTF-8" pageEncoding="UTF-8"%> --%>

<%

//******************************MS excel******************************
	// MS excel로 다운로드/실행, filename에 저장될 파일명을 적어준다.
	response.setHeader("Content-Disposition","attachment;filename=member.xls");
	response.setHeader("Content-Description", "JSP Generated Data");
	
	// ↓ 이걸 풀어주면 열기/저장 선택창이 뜨는 게 아니라 그냥 바로 저장된다.
// 	response.setContentType("application/vnd.ms-excel");
//*********************************************************************


//******************************MS word********************************
	// MS word로 다운로드/실행, filename에 저장될 파일명을 적어준다.
// 	response.setHeader("Content-Disposition", "attachment;filename=member.doc");
// 	response.setHeader("Content-Description", "JSP Generated Data");
    
	// ↓ 이걸 풀어주면 열기/저장 선택창이 뜨는 게 아니라 그냥 바로 저장된다.
// 	response.setContentType("application/vnd.ms-word");
//*********************************************************************
	
	
//******************************한글(hwp)********************************
	// 한글(hwp)로 다운로드/실행, filename에 저장될 파일명을 적어준다.
// 	response.setHeader("Content-Disposition", "attachment;filename=member.hwp");
// 	response.setHeader("Content-Description", "JSP Generated Data");
    
	// ↓ 이걸 풀어주면 열기/저장 선택창이 뜨는 게 아니라 그냥 바로 저장된다.
// 	response.setContentType("application/hwp");
//*********************************************************************

%>

   먼저 jsp의 맨 윗 부분에 위의 코드를 적어준다.


   워드나 한글로 다운로드/실행하고 싶다면 엑셀에 맞춰져 있던 코드들을 주석으로 묶고, 기존에 주석으로 묶여있는 코드들을 풀어주면 된다.




회원 목록

ID 이름 전화번호
patriot2 유관순 0431234567
pitcher 류현진 01034567890
historian 신채호 001886123456

   body 영역에는 엑셀로 다운로드/열기 할 내용을 적어준다.


   센스가 있는 사람이라면 DB와 연동해서 사용할 수 있을 것이다.




jsp 파일을 실행해서 다운로드 혹은 실행했을 때의 모습이다.




   유관순, 류현진의 경우에는 전화번호를 입력한 td 태그에 style로 mso-number-format을 텍스트 형식으로 지정해줬기 때문에 숫자 "0"이 텍스트 방식으로 온전히 표시된다. 만약 신채호의 전화번호처럼 별 다른 서식을 지정하지 않는다면 숫자 "0"이 없어져서 보일 것이다.


   mso-number-format을 알아내는 방법은 다운받은 엑셀 파일의 셀 서식을 원하는 표시형식으로 설정해준 다음 html로 저장 후 코드를 보는 것이다.


   mso-number-format에 관한 것은, 

http://cosicimiento.blogspot.kr/2008/11/styling-excel-cells-with-mso-number.html 참고.




   하지만 이 방법에는 단점이 있다.




   이게 저장 방식 때문에 xls 파일을 실행할 때에 경고창이 뜬다.

   (아마도 html형식의 파일을 확장자 xls를 붙여서 엑셀로 억지로(?) 저장하는 방식인듯...)


   다운로드 후 파일을 열 때마다 경고창이 떠서 참 귀찮다.




   이럴 땐 한 가지 임시방편이 있다.


   파일을 "다른 이름으로 저장"해서 파일 형식을 "Excel 통합 문서"로 지정한 후 저장하면, 그 파일을 다시 실행했을 때 경고창이 뜨지 않는다.


   하지만 이건 어디까지나 임시방편일 뿐, 맨 처음 다운로드 했을 때 뜨는 경고창을 해결하진 못한다.


   뭔가 방법이 있을 법도 한데, 아무리 뒤져봐도 별 다른 방법이 보이지 않는다.


   다행히 워드나 한글로 다운로드/실행 했을 때는 위와 같은 문제가 발생하지 않는다. 이유는 모르겠다.





↑ 워드로 실행 모습




한글로 실행하면 문자 코드를 선택하라고 나온다.

jsp파일 쪽에서 charset으로 지정했던 것을 선택하고 확인을 누르면 된다.




↑ 한글로 실행 모습

표의 칸 간격은 jsp의 table 태그에서 수정하면 된다.





   html을 지원하는 프로그램이라면 contentType과 header값만 알맞게 변경하면 모두 이처럼 다운로드/실행 가능하다.


   그럼 html을 지원하는지 안하는지는 어떻게 알아내나?




   간단하다.


   저장하기에 들어가서 파일 형식 중에 html이 있는지 찾아보면 된다.


   긴가민가 하면 해보면 되고..


   그냥 막 이것저것 해보는 게 최고다. ㅋㅋ






   참고한 곳 ☞ http://blog.daum.net/_blog/BlogTypeView.do?blogid=0QPBp&articleno=243



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함