GridView 엑셀로 저장하기
protected void btnExcel_Click(object sender, EventArgs e)
{
//다운로드 되도록 헤더 설정
Response.Clear();
string fileName = "Excel.xls";
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.AddHeader("Expires", "0");
Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
//한글 정상 표시되도록
//Response.Charset = "UTF-8";
//Response.ContentEncoding = System.Text.Encoding.Default;
//엑셀에서 자동 숫자변환 안되도록 하는 스타일
string strStyle = @"<style>td {mso-number-format:\@; } </style>";
gvList.RenderControl(htmlWriter);
//엑셀에서 자동 숫자변환 안되도록 스타일 적용
Response.Write(strStyle);
Response.Write(stringWriter.ToString());
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
밑에 override부분을 안써주면 렌더링시 형식 'GridView'의 컨트롤 'gvMain'은(는) runat=server 구문과 함께 form 태그 내부에 와야 합니다.라는 에러가 나는데 분명히 GridView 는 form 태그 안에 있고 runat=server이라면 렌더링시 컨트롤이 폼안에 있다는것을 다시한번 override해주면 이런 에러는 없어집니다