jsp 파일에 있는 표나 글씨 등을 엑셀 혹은 워드 파일로 다운로드/실행하는 방법이다.
|
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
31
32
33
34
35
36
37
38
39
40
41 |
<!-- 엑셀 --><%@ 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의 맨 윗 부분에 위의 코드를 적어준다.
워드나 한글로 다운로드/실행하고 싶다면 엑셀에 맞춰져 있던 코드들을 주석으로 묶고, 기존에 주석으로 묶여있는 코드들을 풀어주면 된다.
|
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 |
<h3>회원 목록</h3> <table border="1"> <thead> <tr> <th>ID</th> <th>이름</th> <th>전화번호</th> </tr> </thead> <tbody> <tr> <td>patriot2</td> <td>유관순</td> <td style='mso-number-format: "@";'>0431234567</td> </tr> <tr> <td>pitcher</td> <td>류현진</td> <td style='mso-number-format: "@";'>01034567890</td> </tr> <tr> <td>historian</td> <td>신채호</td> <td>001886123456</td> </tr> </tbody> </table> |
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
'JSP > Excel 다운관련' 카테고리의 다른 글
| jsp poi 폰트, 스타일 적용 (0) | 2015.11.12 |
|---|---|
| [JSP]엑셀 excel 다운로드 파일 만들기 (한글깨짐, 숫자 포함) (0) | 2015.03.09 |
| http://hyunssssss.tistory.com/category/?page=5 (0) | 2015.03.09 |
| HTML을 지원하는 Excel과 Word (0) | 2015.03.09 |
| Java Servlet & JSP API 개발/코딩 (0) | 2015.03.09 |
| JSP 기본(내장) 객체 - response (0) | 2015.03.09 |
| Content-disposition 속성 (0) | 2015.03.09 |
| html excel 추출 하기.& Jquery excel 추출 하기 (0) | 2015.03.09 |