ARTÍCULO DESACTUALIZADO

Este artículo es algo viejo, encuentras una mejor forma de hacer la exportación en este otro artículo.


En algunas ocasiones queremos que toda la información que estamos desplegando con un GridView se exporte automáticamente a un archivo de Excel desde nuestra aplicación ASP.NET 2.

Para hacerlo, basta colocar un GridView vacío en nuestra página (puede ser uno diferente al que utilizas para mostrar la información en HTML).

  1. <asp:GridView ID="GridViewExcel" runat="server">
  2. </asp:GridView>

También necesitamos un botón que al ser presionado haga la exportación:

  1. <asp:LinkButton ID="ExportarAExcel" runat="server">Exportar a Excel</asp:LinkButton>

Por último, aquí está el código que hace la exportación:

  1. Protected Sub ExportarAExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExportarAExcel.Click
  2.     Dim gv As GridView
  3.     gv = Page.Master.FindControl("form1").FindControl("Cuerpo").FindControl("GridviewExcel")
  4.     'Estoy obteniendo la información de mi Business Logic Layer, pero lo puedes hacer
  5.     'de la manera en la que estés acostumbrado
  6.     Dim Logica As New BLLUsers()
  7.     Dim DTable As DSEmpresa.usersDataTable
  8.     DTable = Logica.GetData()
  9.     gv.DataSource = DTable
  10.     gv.DataBind()
  11.     'Exportar a Excel
  12.     Response.Clear()
  13.     Response.Buffer = True
  14.     Response.ContentType = "application/vnd.ms-excel;"
  15.     Response.ContentEncoding = System.Text.Encoding.UTF7
  16.     Response.Charset = ""
  17.     Me.EnableViewState = False
  18.     Dim oStringWriter As System.IO.StringWriter = New System.IO.StringWriter
  19.     Dim oHtmlTextWriter As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(oStringWriter)
  20.     'Me.ClearControls(dg)
  21.     gv.RenderControl(oHtmlTextWriter)
  22.     Response.Write(oStringWriter.ToString())
  23.     Response.End()
  24. End Sub
  25. Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
  26.     'Este override debe estar aqui ya que si no aparecera un error
  27.     'indicando que el Gridview debe estar dentro de un form runat=server
  28. End Sub

Actualización
Si por alguna razón obtienes el error:
RegisterForEventValidation can only be called during Render

intenta colocar EnableEventValidation="false" en la directiva de la página, de tal forma que quede algo así:

  1. <%@ Page Title="" Language="VB" MasterPageFile="~/MasterPages/Principal.master" AutoEventWireup="false" CodeFile="Ejemplo.aspx.vb" Inherits="Ejemplo" EnableEventValidation="false" %>

2 comentarios sobre “Cómo exportar la información de un GridView a Excel

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


3 + = ocho