본문 바로가기
ASP.NET

Html 형식의 Excel 변환시 OpenOffice에서 한글이 깨지는 현상

by Hwoarang757 2013. 9. 26.

기존 xls 파일로 변환시 html 태그가 삽입되어 테이블 형식으로 표현하게 되는데

 

일반 97-2003 의 MS Excel에서는 Open 되어도 한글의 깨짐현상이 없었지만

 

OpenOffice로 XLS 파일을 열시 영문과 숫자를 제외한 한글이 모두 깨짐현상이 발생하였다.

 

OpenOffice에서 Open 시 한글 변환시 깨진 코드는 이렇다

 

// GridView에 값을 바인딩한다.

        DataView.DataBind();

 

        Response.AddHeader("content-disposition", "attachment;filename=excel.xls");

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

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

        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        DataView.RenderControl(htmlWrite);

       

 

Response.Write("<meta http-equiv=Content-Type content='text/html; charset=utf-8'>");

        Response.Write(stringWrite.ToString());

Response.End();

 

 

방법을 찾다보니 Head 부분에 meta 태그를 넣어보란 말이있어서 테스트해봤더니 문제가 해결되었다 ;

 

 

// GridView에 값을 바인딩한다.

DataView.DataBind();

 

        Response.AddHeader("content-disposition", "attachment;filename=excel.xls");

        Response.Charset = "";

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

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

        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        DataView.RenderControl(htmlWrite);

        Response.Write("<html><head><meta http-equiv=Content-Type content='text/html; charset=utf-8'></head><body>");

        Response.Write(stringWrite.ToString());

        Response.Write("</body></html>");

        Response.End();

 

 

 

하지만 style 을 명시한 부분에 backcolor나 bordercolor는 여전히 OpenOffice에는 적용이 되지 않는다.