데이터 그리드나 리피터의 출력 결과물들을 엑셀로 출력할시 한글 깨짐 현상 방지

반응형

-- asp.net 버전 --

먼저,

캐릭터 셋 변경
"ks_c_5601-1987"나 "euc-kr" 둘 중에 택일

Response.Charset = "ks_c_5601-1987";


메타태그의 컨텐트 타입 변경

Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">");


Web.config 파일

전역화 설정 부분에 있는 responseEncoding을 다음과 같이 변경

responseEncoding="euc-kr"

(utf-8 로 되어있는부분 다 바꿔주던지.. 맘대로 하시길.. ㅡㅡ;)

이정도만 해주면 한글 깨짐 현상을 없앨 수 있다.


이렇게 했는데 안될시..

다음 부분을 소스에 추가한다.


Response.Buffer = true;  
Response.ClearContent();
Response.ClearHeaders(); -- 이렇게 하면 깨끗해지나~~

convStr = System.Text.RegularExpressions.Regex.Replace(convStr, "&nbsp;", " ");

-- convStr 은 유니코드 문자인데(String), 리플레이스 부분 보면 &nbsp 를 공백으로 처리해준다.

그리고, Response.Write(convStr); 을 추가한다.


-- 전체 소스 --

   #region 엑셀 만들기
   //Response.Buffer = true;  
   //Response.Clear();
   //Response.ClearContent();
   //Response.ClearHeaders();

   string fileName = DateTime.Now.ToShortDateString().Replace("-","")+"테스트.xls";

   Response.ContentType = "application/vnd.ms-excel";

   //컨텐츠 헤더 설정

   Response.AddHeader("Content-Disposition","attachment;fileName="+ Server.UrlPathEncode(fileName)); 

   //한글로 캐릭터 셋 설정..

   Response.Charset = "euc-kr";

   //ViewState 사용 안함

   dgSearchList.EnableViewState = false; //dgSearchList는 데이터 그리드 

   //쓰기 객체 생성

   System.IO.StringWriter sw = new System.IO.StringWriter();

   //html쓰기 객체 생성

   System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);

   //데이터 그리드의 내용을 html로 쓴다.

   //내용물은 테이블<TABLE>..</TABLE> 이런 식이 된다.

   dgSearchList.RenderControl(hw);  
   String convStr = sw.ToString();  
   //convStr = System.Text.RegularExpressions.Regex.Replace(convStr, "&nbsp;", " ");

   String title   = "<table border='1'><tr align='center' height='30'><td>test</td><td>test1</td></tr>";   
  
   Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-kr\">");
   Response.Write(title+convStr+"</table>");
   //Response.Write(convStr);

   //응답객체 종료

   Response.End();
   #endregion


위 소스에서 주석 처리한 부분들 보면,

안될경우에 추가해주면 된다던 부분들이다.. 난 추가 없이도 한글 안깨지고 잘 됐어~ ^^;

반응형

'개발이야기' 카테고리의 다른 글

Windows 2003 SP2 깔고 생긴 일.. 으으  (0) 2007.11.10
자주(?) 보는 에러(Error)들..  (2) 2007.11.09
퍼센트 구해서 이미지 그리기  (0) 2007.10.15
using(){}을 보고..  (0) 2007.10.15
포토샵 조금^^  (0) 2007.10.15