티스토리 뷰
<%@ page language="java" contentType="application/vnd.ms-excel; name='excel', text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
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>
출처 : http://blog.naver.com/tyboss/70038694288
=================================================================================================
<%@ page language="java" contentType="application/vnd.ms-excel; name='excel', text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
그런데 왜인지는 모르겠지만 아래와 같이 선언해주면 엑셀에서 글자가 보이지 않는다.. 한글, 숫자 모두..
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
UTF-8로 써야 할때 방법은 다시 찾아봐야겠다
'프로그래밍 > JSP' 카테고리의 다른 글
[JSP & 웹앱 & 하이브리드앱] 모바일 파일 다운로드 구현 (0) | 2012.07.25 |
---|---|
로컬 컴퓨터에서 일반 사이트 주소 입력으로 프로젝트 접속하기 (0) | 2012.01.04 |
IE(익스플로러) 6 또는 7 버전에서 한글이 깨지는 문제 (2) | 2012.01.04 |
파일 다운로드 도우미 (0) | 2012.01.04 |
[JSP] MVC 게시판 만들기 3(수정, 삭제) (2) | 2011.10.15 |
- struts
- ibatis
- 기본
- 안드로이드
- 오류
- window
- 파이썬
- 페이지 이동
- 주피터 노트북
- 데이터베이스
- 특수문자
- 스프링
- 동양인
- 함수
- 자바스크립트
- 랜덤
- 시각 차이
- 구매 가이드
- 서양인
- Android
- 여성가족부
- mvc
- 테이블
- 코멧
- MacOS
- EL
- JSP
- JavaScript
- 스트럿츠
- jstl
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday