티스토리 뷰

자료/ASP.NET

GridView 엑셀로 저장하기

네오블루 2008. 3. 12. 01:56

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해주면 이런 에러는 없어집니다