(원래 글쓴 사람 : 박주용, payletter)
보통 웹서버에서 파일들의 다운로드를 많이 사용합니다.
방법은 헤더에 "ConentType"을 추가하면 원하는 파일형식으로 표현하여 다운로드를 지원 할 수 있는데요
그 중 Microsoft Word와 Mocrosoft Excel은 HTML을 별도의 가공 없이 클라이언트 웹단에 보여지는 HTML정보를
쉽게 다운받을 수 있는 어플리케이션이 입니다.
그 이유는 다른 어플리케이션과는 다르게 Microsoft Word와 Mocrosoft Excel이 HTML을 인식 할 수 있기 때문에
다른 가공작업 없이 Excel과 Word 파일로 다운로드를 할 수 있는 것입니다.
Excel과 Word가 HTML을 인식할 수 있다?
아래의 예시로 이해가 가능합니다.
우선 HTML 소스가 있습니다.
<table border="1">
<tr>
<td>순번</td>
<td>이름</td>
<td>키</td>
</tr>
<tr>
<td>1</td>
<td>황성규</td>
<td>178</td>
</tr>
<tr>
<td>2</td>
<td>조재영</td>
<td>182</td>
</tr>
<tr>
<td>3</td>
<td>박주용</td>
<td>188</td>
</tr>
<tr>
<td>4</td>
<td>조정훈</td>
<td>152</td>
</tr>
</table>
해당 HTML 소스를 저장합니다.
HTML을 임시로 이름을 exeltext.html로 저장 하였습니다.
그리고, 파일의 확장자를 doc로 변경(저장) 후
Word에서 파일을 열어보면 해당 테이블이 보여집니다.
[저장한 파일]
[워드로 실행한 화면]
그리고 파일의 확장자를 xls로 변경(저장) 후
Excel에서 파일을 열어보면 해당 테이블이 그대로 보여지는 것을 확인 할 수 있습니다.
[저장한 파일]
[엑셀로 실행한 화면]
위의 예에서 보여지듯이 HTML을 지원 하기 때문에 별도의 가공 없이 HTML을 Excel이나 Word파일로
손쉽게 다운로드 할 수 있는 것입니다.
참고로 아래는 각 웹언어별로 Exel과 Word로 다운로드를 할때에 추가하는 헤더 값입니다.
(php와 asp는 헤더 값을 예~~~~~~~전에(전 대학교를 다니고 있었습니다) 이희진 팀장님께서 올려주신 글이 있네요.
- [2631] 웹페이지 다운로드시 Excel,Word로 저장 )
ASP.Net
Excel Down
Response.AddHeader("content-disposition", "attachment;filename=DataGrid.xls");
Response.ContentType = "application/vnd.xls"; 혹은 Response.ContentType = "application/vnd.ms-excel";
Word Down
Response.AddHeader("content-disposition", "attachment;filename=DataGrid.doc");
Response.ContentType = "application/vnd.word"; 혹은 Response.ContentType = "application/vnd.ms-word";
asp
Excel Down
Response.AddHeader "Content-Disposition","attachment; filename=paylist.xls"
Response.ContentType = "application/vnd.xls" 혹은 Response.ContentType = "application/vnd.ms-excel"
Word Down
Response.AddHeader "Content-Disposition","attachment; filename=paylist.doc"
Response.ContentType = "application/vnd.word" 혹은 Response.ContentType = "application/vnd.ms-word"
PHP
Excel Down
Header("Content-Disposition: attachment; filename=paylist.xls");
Header("Content-type: application/vnd.xls"); 혹은 Header("Content-type: application/vnd.ms-excel");
Word Down
Header("Content-Disposition: attachment; filename=paylist.xls");
Header("Content-type: application/vnd.word"); 혹은 Header("Content-type: application/vnd.ms-word");
JSP
Excel Down
<%@ page language="java" contentType="application/vnd.ms-excel; charset=euc-kr"%>
response.setHeader("Content-Description", "JSP Generated Data");
response.setHeader("Content-Disposition", "attachment;filename=ServieRequestList.xls");
Word Down
<%@ page language="java" contentType="application/vnd.word; charset=euc-kr"%>
response.setHeader("Content-Description", "JSP Generated Data");
response.setHeader("Content-Disposition", "attachment;filename=ServieRequestList.doc");
감사합니다.
수고하세요
==== 추가(by Hagi) ==========================================================================
daisky86님이 아래와 같이 질문, 답을 주셨는데... 그 이유에 대해서 설명할까한다.
(Q)엑셀 2003버전으로 .xls는 가능하지만 .xlsx(2007버전)은 되지 않네요;;
2007버전 부터는 위의 기능을 제공하지 않는 건가요?
(A)
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 변경하고
HttpContext.Current.Response.AddHeader("Content-Disposition:", "attachment;filename=EXCEL"); 하면 파일 다운로드 시 사용할 프로그램 엑셀로 하면 열리네요 ~
그런데 HttpContext.Current.Response.AddHeader("Content-Disposition:", "attachment;filename=EXCEL.xlsx");
확장자를 넣어 다운로드를 받아 파일을 열면 파일형식 또는 확장명이 잘못되서 "EXCEL.xlsx'파일을 열 수 없습니다. 파일이 손상되지 않았는지, 파일 확장명이 파일 형식과 일치하는지 확인하십시오 라고 경고창이 나오고 열리지 않고 Excel.xlsx에서 확장자명을 xls로 바꿔서 열면 열리네요 ;ㅁ;
좀 더 고민해봐야겠어요 ~
[이유 설명] - 박정환 사원의 도움을 얻었음
http://forums.sdn.sap.com/thread.jspa?threadID=1726392 에서 답변 중 하나를 보면,
현재버전으로는 API정의상 힘든것으로 보입니다.
downloadPdforXls.jsp의 내용중에서
확장자를 xlsx로 변경하고, contenttype을
application/vnd.ms-excel -> application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(excel2007 통합문서)
로 변경하더라도
실제 파일속성이 맞지 않아 열리지가 않습니다.
해당 contenttype으로 문서를 만들때 사용되는 BinaryView 속성에 대한 설명이 아래 링크와 같이
Excel2003만 고려되어 있기 때문인 것으로 보입니다.
여기서 참조를 따라가 보면, JSP에서 엑셀 파일을 보여주기 위해 BinaryView라는 API를 쓰고 있다는 것을 알게된다.
BinaryView의 API를 보면, getMimeType이라는 메서드가 있는데... http://help.sap.com/javadocs/boe/xi/ws/en/com/businessobjects/dsws/bicatalog/Document.html#getMimeType()
getMimeType
public java.lang.String getMimeType()
- Return the mime type of the Document.
Supported Business Objects Document types:
- application/x-rpt (Crystal Report)
- application/rep (Full Client)
- application/wid (Webi Document)
Supported third party document mime-types:
- application/msword (doc)
- application/vnd.ms-powerpoint (ppt)
- application/vnd.ms-excel (xls)
- application/pdf (pdf)
- application/zip (zip)
- application/rtf (rtf)
- application/winhlp (hlp)
- video/msvideo (avi)
- video/mpeg (mpg, mpeg)
- text/plain (txt)
- text/html (html)
- text/xml (xml)
- image/jpeg (jpeg)
- image/gif (gif)
- image/bmp (bmp)
- audio/x-wav (wav)
- application/x-msaccess (mdb)
- application/x-mswrite (wri)
- application/octet-stream
- Returns:
- a string containing the mime type.
아직 xlsx를 포함하고 있지 않다.
'JSP > 마임 타입 설정' 카테고리의 다른 글
JSP 확장자별 MIME 타입(ContentType 설정) (0) | 2015.02.24 |
---|