Hola a tod@s,
Aqui os traigo otro post muy cortito el cual nos muestra como podemos exportar los datos de un GridView de ASP.NET a Excel. Para hacerlo, basta con colocar un GridView vacio en el codigo de nuestra pagina de la siguiente forma:
1 |
<asp:GridView ID="GridViewExcel" runat="server"></asp:GridView> |
Necesitaremos tambien un boton para indicar que queremos exportar la informacion, lo incluiremos de la misma forma.
1 |
<asp:LinkButton ID="lnkExportarAExcel" runat="server">Exportar a Excel</asp:LinkButton> |
Y por ultimo, incluiremos el siguiente codigo, previamente, para este ejemplo he cargado un datatable muy sencillo en el Load de la pagina.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Creamos un origen de datos, aqui iria tu carga de informacion Dim dtDatos As New DataTable("Ejemplo") dtDatos.Columns.Add("Nombre", GetType(String)) dtDatos.Columns.Add("Apellidos", GetType(String)) Dim drFila As DataRow = dtDatos.NewRow drFila("Nombre") = "Cesar" drFila("Apellidos") = "Perez" dtDatos.Rows.Add(drFila) GridViewExcel.DataSource = dtDatos GridViewExcel.DataBind() End Sub Protected Sub lnkExportarAExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkExportarAExcel.Click 'Exportar a Excel Response.Clear() Response.Buffer = True Response.ContentType = "application/ms-excel" Response.AddHeader("content-disposition", "attachment;filename=Grid1Excel.xls") Response.ContentEncoding = System.Text.Encoding.UTF8 Response.Charset = "" Me.EnableViewState = False Dim oStringWriter As System.IO.StringWriter = New System.IO.StringWriter Dim oHtmlTextWriter As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter) GridViewExcel.RenderControl(oHtmlTextWriter) Response.Write(oStringWriter.ToString()) Response.End() End Sub Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control) 'Este override debe estar aqui ya que si no aparecera un error 'indicando que el Gridview debe estar dentro de un form runat=server End Sub |
NOTA: si por alguna razon, os saltase el error “RegisterForEventValidation can only be called during Render“, se puede solucionar colocando la siguiente directiva EnableEventValidation en la pagina:
1 2 |
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" EnableEventValidation="false" %> |
Espero que te valga para algo este fragmento de codigo muy sencillo.
Saludos