Despues de estar probando y probando al fin me resulto, ¿Como sacamos los datos de un GridView a un hoja de Excel?.

Primero supongo que ya tienen todos los datos en el Gridview y ya se muestra en el webForm.

Como segundo paso tenemos que agregar un boton y en el evento click agregamos el siguiente codigo:


Response.ClearContent();
Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

GridView1.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();


Si lo corremos en este momento nos va a dar el siguiente error


Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server.


Entonces lo que debemos hacer es agregar el metodo sobrecargado del metodo VerifyRenderingInServerForm, y dentro de este metodo no ponemos nada, de la siguiente manera:


public override void VerifyRenderingInServerForm(Control control)
{

}


Y asi ya tenemos funcionando nuestro Gridview y lo podemos exportar a excel.

Si no queremos presionar el boton para que se exporte sino que queremos que al cargar la pagina se exporte a excel lo que debemos de hacer es copiar el mismo codigo al evento load del gridview y ya, espero les sirva, dejen su comentario y nos vemos a la proxima.