본문 바로가기
IT-개발,DB

[개발] [asp.net]RenderControl을 이용한 엑셀로 저장

by SB리치퍼슨 2010. 11. 4.

기본적인 페이지 로드시 웹페이지가 아닌 엑셀시트임을 표시하는 것 만으로도

엑셀페이지 표시가 가능하다. 익스플로러를 이용해서 그런갑다...

 

        private void Page_Load(object sender, System.EventArgs e)

        {

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

            Response.ContentEncoding = System.Text.UTF7Encoding.UTF7;

            string strReturn = "";

        }

 

2. DataGrid의 RenderControl를 이용해 엑셀로 저장하는 메서드를 보자..

데이터 그리드 내용만 저장된다.. 신기하죵?

 

        private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)

        {

            string fileName = DateTime.Now.ToString("yyyyMMddHHmmss")+".xls";

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

            Response.AddHeader("Content-Disposition","attachment;fileName="+fileName);

            Response.Charset = "";

            DataGrid1.EnableViewState = false;

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

            tw.WriteLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">");//한글 깨짐 방지

            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

            DataGrid1.RenderControl(hw);

            Response.Write(tw.ToString());

            Response.End();

        }

 

3. 응용해서 어떠한 개체의 RenderControl를 이용해 엑셀로 저장 가능하다.

  일반 테이블로 만든 것에도 단순히... runat=server와 id를 부여하여 저장 가능하다.

  그라몬 서버 컨트롤로 인식 해부니까...

 다음의 예는 일반 테이블 테그에 서버컨트롤 지정해서 저장한다. 위에 데이터 그리드랑 별 차이 없다.

 

        private void btnExcel_Click(object sender, System.EventArgs e)

        {

            string fileName = "aa_"+DateTime.Now.ToString("yyyyMMddHHmmss")+".xls";

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

            Response.AddHeader("Content-Disposition","attachment;fileName="+fileName);

            Response.Charset = "";

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

            tw.WriteLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-kr\">");//한글 깨짐 방지

 

            // 그래프도 함께 나도오록 하자..

            Chart1.HtmlTag = "Jpeg";

            Chart1.ImgWidth = 1000;

            tw.WriteLine(Chart1.GetHtmlTag(1000,450).Replace("IMG SRC=\"","IMG SRC=\"http://www.aaa.com")+"<br>");//그림을 붙이자.. 쩝쩝..

 

            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

            this.tabResultList.RenderControl(hw);

            Response.Write(tw.ToString());

            Response.End();

        }


출처: http://www.devpia.com/blog/myblog.aspx?pdsidx=2304&ownerid=surfex

반응형

댓글