c# 엑셀(Excel) 숫자형식 텍스트로 처리하는 방법
c# 에서 개발시에 엑셀 파일로 저장할 경우 숫자형식이 아닌데, 숫자형식으로 지정이 되어 곤란할 떄가 있다.
00001 같은 경우 1로 보여질떄 =ㅁ=; 대략 난감..
이럴 경우 셀 자체를 TEXT 형식으로 인식하도록 처리하여야 한다.
이럴 경우
기존 소스
public override void ExecuteResult(ControllerContext context)
{
HttpContext curContext = HttpContext.Current;
curContext.Response.Clear();
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + this.FileName);
if (!HttpContext.Current.Request.IsSecureConnection) //http 통신일만 캐시 적용
{
curContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.Charset = "UTF-8";
curContext.Response.ContentEncoding = Encoding.UTF8;
curContext.Response.BinaryWrite(Encoding.UTF8.GetPreamble());
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
this.ExcelGridView.RenderControl(htw);
byte[] byteArray = Encoding.UTF8.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.UTF8);
curContext.Response.Write(sr.ReadToEnd());
curContext.Response.End();
}
변경된 소스
public override void ExecuteResult(ControllerContext context)
{
HttpContext curContext = HttpContext.Current;
curContext.Response.Clear();
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + this.FileName);
if (!HttpContext.Current.Request.IsSecureConnection) //http 통신일만 캐시 적용
{
curContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.Charset = "UTF-8";
curContext.Response.ContentEncoding = Encoding.UTF8;
curContext.Response.BinaryWrite(Encoding.UTF8.GetPreamble());
StringWriter sw = new StringWriter();
string style = @"<style> TD { mso-number-format:\@; } </style>";
sw.Write(style);
HtmlTextWriter htw = new HtmlTextWriter(sw);
this.ExcelGridView.RenderControl(htw);
byte[] byteArray = Encoding.UTF8.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.UTF8);
curContext.Response.Write(sr.ReadToEnd());
curContext.Response.End();
}
위와 같이
string style = @"<style> TD { mso-number-format:\@; } </style>";
sw.Write(style);
부분을 추가해 주시면 엑셀(EXCEL) 에서 포맷을 숫자로 인식하지 않고, 텍스트로 인식한다.
'프로그램&코딩' 카테고리의 다른 글
IIS 응용 프로그램 서버 오류 : 보안 예외 System.Security.SecurityException (0) | 2019.02.22 |
---|---|
다음에디터(kakao/DaumEditor) 표만들기 이미지가 깨어질때 (0) | 2019.01.18 |
c# restful api 개발시 http, https 셋팅 (0) | 2018.12.12 |
웹 캐시로 UI 및 css 및 js 파일이 적용이 되지 않을때. (0) | 2018.08.09 |
System.Web.Mvc.Controller.HandleUnknownAction(String actionName) 발생하는 경우.. (0) | 2018.07.17 |
CSS , javascript 에서 로딩 지연이 발생할때 처리방법 asynchronously, async defer (0) | 2018.06.26 |