【转载整理】repeater把数据导出到Excel

 

repeater把数据导出到Excel

 

方法一:

    StringWriter sw = new StringWriter();  
            HtmlTextWriter htw = new HtmlTextWriter(sw);  
            string attachment = "attachment; filename=myReport.xls";  
            Response.ClearContent();  
            Response.AddHeader("content-disposition", attachment);  
            Response.ContentType = "application/octet-stream";  
            repMessage.RenderControl(htw);  
            Response.Write(sw.ToString());  
            Response.Flush();  
            Response.End();  

 

方法二:

StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        Page page = new Page();
        HtmlForm form = new HtmlForm(); 

        Repeater1.EnableViewState = false;


        page.EnableEventValidation = false;

        page.DesignerInitialize();

        page.Controls.Add(form);
        form.Controls.Add(Repeater1);


        page.RenderControl(htw);

        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/ms-excel";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("Test.xls", Encoding.UTF8).ToString());
        Response.Charset = "UTF-8";
        Response.ContentEncoding = Encoding.Default;
        Response.Write(sb.ToString());
        Response.End();

 

 

分页Repeater导出数据到Excel

  

 

1.导出Repeater中的数据时,导出的数据必须是完整的数据块,例如:完整的table。

2.如果导出的数字按科学计数法显示则在那列加入样式:style="vnd.ms-excel.numberformat:@"即可。

3.Repeater导出到Excel的代码(C#):

    public static void ReportToExcel(System.Web.UI.Control ctl)
        {
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
            HttpContext.Current.Response.ContentType = "application/ms-excel";
            HttpContext.Current.Response.Charset = "gb2312";
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("Hello.xls", System.Text.Encoding.UTF8).ToString());
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            ctl.RenderControl(htw);
            HttpContext.Current.Response.Write(sw.ToString());
            HttpContext.Current.Response.End();
        }

4.如果支持分页,并且页面不是回发的情况下,可以用如下方法调用:

                string where = string.Format("{0} and PayState=1", whereSQL);//根据需要,重新拼写where条件
                DataTable dt = Function.PayDesigner.GetPayDesignerList(where, orderSQL, 1, recordCount); //recordCount为记录的总条数                          
                Repeater1.DataSource = dt;
                Repeater1.DataBind();
                ReportToExcel(Repeater1);

 

posted @ 2010-09-15 15:40  summer0311  阅读(4855)  评论(2编辑  收藏  举报