Html 형식의 Excel 변환시 OpenOffice에서 한글이 깨지는 현상
기존 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에는 적용이 되지 않는다.