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.

10 comentarios:

John Joe dijo...

Interesante solución, ya que en muchas ocasiones es necesario exportar los datos para hacerlos mas transportables y presentables, espero que sigan mas post como este dandonos unos cuantos tips para herramientas como esta. Ah por cierto espero que en la proxima entrega pudieras poner unos cuantos screenshots para ver los resultados un poco mas graficos, Saludos.

Nery Marroquin dijo...
Este comentario ha sido eliminado por el autor.
Nery Marroquin dijo...
Este comentario ha sido eliminado por el autor.
Nery Marroquin dijo...

Si te hicieras un manualito de ontocif del tema seria mejor .. jaja

EDDY GONZALEZ dijo...

Un manual del Onto-shit del huber quedaria bien, jaja

DarkSun dijo...

Disculpa la ignorancia soy muy nuevo en el uso de C# donde exactamente se coloca el

public override void VerifyRenderingInServerForm(Control control)
{

}

por que aun me aparece el error Sólo se puede llamar a RegisterForEventValidation durante Render();

Unknown dijo...

me sale el mismo error qeu DarkSun como agrego ese evento

Unknown dijo...

Muchisimas gracias porque la verdad que me vino de maravilla. habia probado de muchas formas y aun no habia resuelto el problema.

Queria preguntarte si cuando lo salvabas siempre te salia un cartel hablando del cambio de extencion. y si es posible eliminarlo.

Saludos

Wilmar Cabezas dijo...

Muchas gracias, es la primera vez que encuentro como solucionar ese mensaje el exportar. Quisiera saber si hay alguna forma de exportar incluyendo varias hojas al libro de excel.

Muchas gracias.

Unknown dijo...

hola, sabes estoy buscando lo siguiente.
Este codigo te exporta una hoja excel de un gridview, en mi caso tengo 2 gridview y necesito esportarlo al mismo excel en distintas hojas...
sabes como podria hacerlo??
gracias de antemano