Cómo exportar la información de un GridView a Excel con EPPlus

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 3.5 o superior.

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).

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

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

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

Necesitamos utilizar la librería EPPlus. Solamente descárgala y coloca los archivos EPPlus.dll y EPPlus.XML en la carpeta Bin de tu proyecto.

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

Protected Sub ExportarAExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExportarAExcel.Click
   Dim gv As GridView
   'Estoy obteniendo la información de mi Business Logic Layer, pero lo puedes hacer
    'de la manera en la que estés acostumbrado
    Dim Logica As New BLLUsers()
    Dim DTable As DSEmpresa.usersDataTable
    DTable = Logica.GetData()
    gv.DataSource = DTable
    gv.DataBind()
 
   Dim excelPackage = New ExcelPackage
   Dim excelWorksheet = excelPackage.Workbook.Worksheets.Add("Hoja 1")
   excelWorksheet.Cells("A1").LoadFromDataTable(Dset, True)
   Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
   Response.AddHeader("content-disposition", "attachment;  filename=UsuariosExportados.xlsx")
   Dim stream As MemoryStream = New MemoryStream(excelPackage.GetAsByteArray())
   Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length)
   Response.Flush()
   Response.Close()    
 
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

Y listo, con eso podrás exportar tu información a Excel.

Éste método funciona mejor que el viejito que había escrito aquí.

Cómo encontrar el Id de un registro recién insertado en una tabla de SQL Server

En una aplicación asp.net algunas veces necesitas encontrar el Id del registro recién insertado para utilizarlo en otra operación.

En este ejemplo voy a suponer que tienes un DAL y un BLL, es decir, un archivo con terminación .xsd y un archivo con terminación .vb.

En el “TableAdapter” de tu archivo xsd crea una nueva consulta y pon lo siguiente:

INSERT INTO [MiTabla] ([Campo1], [Campo2])
OUTPUT INSERTED.IdMiTabla
VALUES (@Campo1, @Campo2)

Nota la segunda línea, ésta hace que el valor de salida de tu consulta NO sea el número de registros afectados, sino el valor del Id del registro recién insertado.

Pero para que esto funcione falta una cosa más: en tu archivo xsd selecciona la consulta en tu “TableAdapter” y abre sus propiedades. Ahora establece la propiedad “ExecuteMode” a “Scalar”, así:

scalar

Listo, suponiendo que a tu “TableAdapter” le diste el nombre “InsertarYRegresarElUltimoId”, ahora en tu BLL utiliza un código similar a este:

Dim UltimoId As Integer = Adapter.InsertarYRegresarElUltimoId(Campo1, Campo2)

El valor guardado en la variable “UltimoId” será el correspondiente al Id recién insertado y ahora lo puedes usar para las demás operaciones que vas a hacer.

Cómo evitar que la página haga scroll al inicio al oprimir un botón en asp.net

Al tener un formulario dentro de un control de usuario (.ascx), y éste a su vez dentro de una página asp.net (.aspx), puede ocurrir que los botones que se encuentran en la parte media o baja de la página, al ser cliqueados, mandan el scroll del navegador hasta arriba.

Por ejemplo, si tienes un formulario con un validador que está haciendo que el formulario no se pueda enviar, la página se irá al inicio de golpe y el usuario no podrá ver el mensaje de error, y no sabrá qué ocurrió.

Para evitar que esto ocurra, simplemente coloca este código javaScript dentro del tag “head”:

window.scrollTo = function () { }

Y listo, así se soluciona.

Cómo usar la herramienta de configuración de asp.net sin Visual Web Developer 2010

Cuando usaba Visual Web Developer 2010 tenía esta herramienta para crear usuarios y roles del membership:

Ahora bien, si ya te cambiaste a Visual Studio 2013 for Web, habrás notado que quitaron esta opción.

Si quieres correr la herramienta de configuración aún lo puedes hacer en dos pasos sencillos.

Primero, abre un command prompt (sin permisos de administrador) y teclea lo siguiente:

"C:\Program Files\IIS Express\iisexpress.exe" /path:c:\windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:"/asp.netwebadminfiles" /port:8089 /clr:4.0 /ntlm

En caso de que no cuentes con IIS Express, lo puedes descargar de aquí.

No cierres la ventana oprimiendo la tecla ‘q’. Déjala abierta. Esto mantiene corriendo el servidor web al que te vas a conectar.

Ahora, abre un navegador y teclea lo siguiente:

http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=[Ruta_Exacta_A_La_Aplicacion]\&applicationUrl=/

Por ejemplo, si tu aplicación está en c:\miapp, teclearías lo siguiente:

http://localhost:8089/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=c:\miapp\&applicationUrl=/

Y listo, ya tienes acceso a la tan extrañada herramienta para crear rápidamente usuarios y roles.

Nota: Si te pide usuario y contraseña, es la misma con la que te logueas a tu PC o servidor.

Referencias:
http://blogs.msdn.com/b/webdev/archive/2013/08/19/asp-net-web-configuration-tool-missing-in-visual-studio-2013.aspx
http://stackoverflow.com/questions/20541680/visual-studio-2013-and-asp-net-web-configuration-tool/20555928#20555928