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 |