출처 : http://blog.naver.com/tyboss/70038694288
1. 첫번째 방법
<%
response.setHeader("Content-Disposition", "attachment; filename=diary.xls");
response.setHeader("Content-Description", "JSP Generated Data");
response.setContentType("application/vnd.ms-excel");
%>
2. 두번째 방법
<%@ page contentType="application/vnd.ms-excel;charset=euc-kr" %>
<%
response.setHeader("Content-Disposition", "attachment; filename=LIST.xls");
response.setHeader("Content-Description", "JSP Generated Data");
%>
3. 세번째 방법 (한파일에 기본 페이지와 엑셀 다운로드 설정할때)
<%
if(actionKind.equals("Search")){
response.setContentType("text/html; charset=euc-kr");
}else{
response.setHeader("Content-Disposition", "attachment; filename=diary.xls");
response.setHeader("Content-Description", "JSP Generated Data");
response.setContentType("application/vnd.ms-excel");
}
%>
4. 네번째 방법 (한글 제목에 브라우저별 처리)
titleName = "한글제목";
titleName = new String(titleName.getBytes("KSC5601"), "8859_1");
if(clientBrowser.indexOf("MSIE 5.5")>-1 || clientBrowser.indexOf("MSIE 6.0") > -1 ){
response.setHeader("Content-Type", "doesn/matter;");
response.setHeader("Content-Disposition", "filename="+titleName+".xls");
}else{
response.setHeader("Content-Type", "application/vnd.ms-excel;charset=EUC-KR");
response.setHeader("Content-Disposition", "attachment; filename="+titleName+".xls");
}
response.setHeader("Content-Transfer-Encoding", "binary;");
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
=========================================================================================================================
=========================================================================================================================
한글깨짐
head 에 다음과 같은 처리를 같이 해주면 왠만하면 해결이 된다.
<META HTTP-EQUIVE="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=KSC5601">
=========================================================================================================================
=========================================================================================================================
운영서버에서는 한글이 다 깨지는데 개발서버에서는 제대로 나와서 더 해결방법 찾기가 난감했다.
jsp 소스를 운영 거로 업어치고 나서도 여전히 잘만 보이는 개발서버 쪽 엑셀.. 뭐가 문제냐. ㄱ-
DB 상의 데이터까지 운영 쪽으로 맞추니 그제서야 한글이 깨지기 시작했다.
그럼 문제는 데이터라는 소리인데.. 어떻게 봐도 한글이 깨질 건수가 안 보였다.
웹 상에 떠도는 한글 깨짐 방지 태그라는
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
이 녀석을 써 봐도 여전히 묵묵부답..
하지만 해결책은 간단했다.
엑셀 녀석이 데이터를 인코딩 태그로 인식하는 경우가 간혹 생기는데
데이터 타입 앞에 만 입력해주면 끝. 아주 깨끗하게 잘 나온다.
<td> <%= crset.getString(1) %></td> ← 이런 식으로
=========================================================================================================================
=========================================================================================================================
숫자형식 엑셀에서 표현하기
== 사용법 ==
<style type="text/css">
td {mso-number-format:000000;}
</style>
또는
<td align='center' style='mso-number-format:000000'>
000000 : 소수도 여섯자리 정수 (반올림)로 표현된다. 여섯자리 앞의 빈칸은 0으로 채워짐
1.23 => 000001, 67.67 => 000068
000.000 : 소수자리 세자리까지 (반올림) 표현된다. 앞 뒤 빈칸은 0으로 채워짐
format은 0.00 인데 숫자가 15.1 인 경우 15.10으로 표현됨
1.5678 => 001.568
\@ : 셀형식을 텍스트형으로 표현
00035.90 인 경우 셀 형식이 숫자형이라면 35.9로 표현되지만 문자형으로 하면 0을 포함하여 보이는 그대로 표현됨
그 외 mso-number-format 요소들
NO Decimals
mso-number-format:"0\.000"
3 Decimals
mso-number-format:"\#\,\#\#0\.000"
Comma with 3 dec
mso-number-format:"mm\/dd\/yy"
Date7
mso-number-format:"mmmm\ d\,\ yyyy"
Date9
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM"
D -T AMPM
mso-number-format:"Short Date"
01/03/1998
mso-number-format:"Medium Date"
01-mar-98
mso-number-format:"d\-mmm\-yyyy"
01-mar-1998
mso-number-format:"Short Time"
5:16
mso-number-format:"Medium Time"
5:16 am
mso-number-format:"Long Time"
5:16:21:00
mso-number-format:"Percent"
Percent - two decimals
mso-number-format:"0%"
Percent - no decimals
mso-number-format:"0\.E+00"
Scientific Notation
mso-number-format:"\@"
Text
mso-number-format:"\#\ ???\/???"
Fractions - up to 3 digits (312/943)
mso-number-format:"\0022£\0022\#\,\#\#0\.00"
£12.76
mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\-\#\,\#\#0\.00\" 2 decimals, negative numbers in red and signed(1.56 -1.56)
한 셀 안에서 줄바꿈
<style>
.xl24 {mso-number-format:"\@";}
br {mso-data-placement:same-cell;}
</style>
JSP 파일에서 excel로 출력하는 예를 들어 설명해보자...
먼저 jsp에서 html 시작하기 전에 다음 코드를 적용하여 response를 set한다.
<%
response.setHeader("Content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=파일이름.xls" );
response.setHeader("Content-Description", "JSP Generated Data");
%>
그리고 html 에서 table로 출력을 하면 excel 파일로 출력하게 된다.
<table border=1>
<tr>
<td>success</td>
</tr>
</table>
위와 같이 하면 excel 파일 1행 1열로 success가 출력이 된다.
각 포맷에 대한 content-type은 다음과 같은 값을 가질 수 있다.
Application |
Des. |
확장자 |
application/acad |
AutoCAD drawing files |
dwg |
application/clariscad |
ClarisCAD files |
ccad |
application/dxf |
DXF (AutoCAD) |
dxf |
application/msaccess |
Microsoft Access file |
mdb |
application/msword |
Microsoft Word file |
doc |
application/octet-stream |
Uninterpreted binary |
bin |
application/pdf |
PDF (Adobe Acrobat) |
|
application/postscript |
Adobe Illustrator |
ai, ps, eps |
application/rtf |
Rich Text Format file |
rtf rtf |
application/vnd.ms-excel |
Microsoft Excel file |
xls |
application/vnd.ms-powerpoint |
Microsoft PowerPoint file |
ppt |
application/x-cdf |
Channel Definition Format file |
cdf |
application/x-csh |
C-shell script |
csh csh |
application/x-dvi |
TeX |
dvi dvi dvi |
application/x-javascript |
JavaScript source file |
js |
application/x-latex |
LaTeX source file |
latex |
application/x-mif |
FrameMaker MIF format |
mif |
application/x-msexcel |
Microsoft Excel file |
xls |
application/x-mspowerpoint |
Microsoft PowerPoint file |
ppt |
application/x-tcl |
TCL script |
tcl |
application/x-tex |
TeX source file |
tex |
application/x-texinfo |
Texinfo (emacs) |
texinfo, texi |
application/x-troff |
troff file |
t, tr, roff t, tr, roff |
application/x-troff-man |
troff with MAN macros |
man |
application/x-troff-me |
troff with ME macros |
me |
application/x-troff-ms |
troff with MS macros |
ms |
application/x-wais-source |
WAIS source file |
src |
application/zip |
ZIP archive |
zip |
audio/basic |
Basic audio (usually m-law) |
au, snd |
audio/x-aiff |
AIFF audio |
aif, aiff, aifc |
audio/x-wav |
Windows WAVE audio |
wav |
image/gif |
GIF image |
gif |
image/ief |
Image Exchange Format file |
ief |
image/jpeg |
JPEG image |
jpeg, jpg jpe |
image/tiff |
TIFF image |
tiff, tif |
image/x-cmu-raster |
CMU Raster image |
ras |
image/x-portable-anymap |
PBM Anymap image format |
pnm |
image/x-portable-bitmap |
PBM Bitmap image format |
pbm |
image/x-portable-graymap |
PBM Graymap image format |
pgm |
image/x-portable-pixmap |
PBM Pixmap image format |
ppm |
image/x-rgb |
RGB image format |
rgb |
image/x-xbitmap |
X Bitmap image |
xbm |
image/x-xpixmap |
X Pixmap image |
xpm |
image/x-xwindowdump |
X Windows Dump (xwd) |
xwd |
multipart/x-gzip |
GNU ZIP archive |
gzip |
multipart/x-zip |
PKZIP archive |
zip |
text/css |
Cascading style sheet |
css |
text/html |
HTML file |
html, htm |
text/plain |
Plain text |
txt |
text/richtext |
MIME Rich Text |
rtx |
text/tab-separated- values |
Text with tab-separated values |
tsv |
text/xml |
XML document |
xml |
text/x-setext |
Struct-Enhanced text |
etx |
text/xsl |
XSL style sheet |
xsl |
video/mpeg |
MPEG video |
mpeg, mpg, mpe |
video/quicktime |
QuickTime video |
qt, mov |
video/x-msvideo |
Microsoft Windows video |
avi |
video/x-sgi-movie |
SGI movie player format |
movie |
추
'JSP' 카테고리의 다른 글
FileUploadRequestWrapper (0) | 2012.05.08 |
---|---|
FileUpLoad (0) | 2012.05.08 |
fileDownload.jsp (0) | 2012.05.08 |
FileDownLoad (0) | 2012.05.08 |
cubrid-dbcp설정. (0) | 2012.05.08 |