protected void btnToExcel_Click(object sender, EventArgs e)
{
this.EnableViewState = false;
gridView.AllowPaging = false;
BindData();
Gridview_To_Excel(gridView);
gridView.AllowPaging = true;
BindData();
}
//这个必须是要写的
public override void VerifyRenderingInServerForm(Control control) { }
/// <summary>
/// 传入要导出的Gridview
/// </summary>
/// <param name="objectGridview"></param>
public static void Gridview_To_Excel(GridView objectGridview)
{
//表格外观(前景色、背景色)
objectGridview.BackColor = System.Drawing.Color.White;
objectGridview.ForeColor = System.Drawing.Color.Black;
//表格线
objectGridview.BorderWidth = 1;
//数据行外观
objectGridview.RowStyle.BackColor = System.Drawing.Color.White;
objectGridview.RowStyle.ForeColor = System.Drawing.Color.Black;
//数据交替行外观;
objectGridview.AlternatingRowStyle.BackColor = System.Drawing.Color.White;
objectGridview.AlternatingRowStyle.ForeColor = System.Drawing.Color.Black;
//控件外观
objectGridview.BorderStyle = BorderStyle.Solid;
objectGridview.BorderWidth = 1;
//表头标题行外观
objectGridview.HeaderStyle.BackColor = System.Drawing.Color.White;
objectGridview.HeaderStyle.ForeColor = System.Drawing.Color.Black;
objectGridview.Attributes.Add("style", "background:#FFFFFF;color:#FFFFFF;");
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//如果出现了像韩文的情况,那就把这行里的"gb2312"改成"utf-7";
HttpContext.Current.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
objectGridview.DataBind();
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter);
//由于gridview的内容可能是分页显示的,
//因此,这里在每次导出excel时,先将gridview的allowpaging属性设置为false,
//然后通过页面流的方式导出当前页的gridview到excel中,最后再重新设置其allowpaging属性
objectGridview.RenderControl(oHtmlTextWriter);
HttpContext.Current.Response.Output.Write(oStringWriter.ToString());把HTML写回浏览器
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
objectGridview.DataBind();
}