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);