从GridView导出数据到Excel时,必须加上 :
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
这个看似没用的方法,否则vs.net 2005将提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
从GridView导出数据到Excel的完整代码如下:
protected void Button2_Click(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand = sql;
GridView1.AllowPaging = false;
GridView1.DataBind();
//清除客户端当前显示
Response.Clear();
//显示标头
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
//设置显示的字和内容要存的形式
//Response.Charset = "gb2312";
//Response.ContentType = "application/vnd.xls";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
//GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
GridView1.AllowPaging = true;
GridView1.DataBind();
}
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}