티스토리 뷰
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
'공장 (factory) > - Programming..' 카테고리의 다른 글
[Cassandra] DevCenter - DataStax Developer Tool (2) | 2013.10.29 |
---|---|
[Cassandra] 다운로드와 간단한 설치법,(window7 기준) (0) | 2013.10.28 |
[JSP] naver SmartEditor2 이미지 첨부 기능 (수정 보완) (83) | 2013.09.24 |
[JSP] 파일 다운로드. (8) | 2013.09.23 |
[JSP] MultipartRequest를 이용한 파일 업로드 (11) | 2013.09.17 |