VB.Net: Exportar datos a Excel

En ocasiones necesitamos exportar datos a un documento excel, ya sea de una base de datos o introducidos por el usuario en nuestro programa. Exportar datos a excel nos permitirá trabajar con esa información de una manera mas cómoda y eficiente. A continuación, muestro como se realiza la creación de un documento excel, se exportan los datos y se aplica formato, todo gracias a la librería “Microsoft.Office.Interop.Excel”. Antes de continuar hay que asegurarse de que tenemos instalado Microsoft Office con Excel.

Imports Excel = Microsoft.Office.Interop.Excel

Private Sub ButtonExportarUsuarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonExportarUsuarios.Click

     ' Cambiamos el cursor por el de carga
     Me.Cursor = Cursors.WaitCursor

     ' Conexión con la base de datos
     Dim connection As String = "Provider=sqloledb;Data Source=miServidor;Initial Catalog=bdd_Web;User Id=web;Password="
     Dim conexion As New OleDb.OleDbConnection(connection)

     Try
         ' Creamos todo lo necesario para un excel
         Dim appXL As Excel.Application
         Dim wbXl As Excel.Workbook
         Dim shXL As Excel.Worksheet
         Dim indice As Integer = 2
         appXL = CreateObject("Excel.Application")
         appXL.Visible = False 'Para que no se muestre mientras se crea
         wbXl = appXL.Workbooks.Add
         shXL = wbXl.ActiveSheet
         ' Añadimos las cabeceras de las columnas con formato en negrita
         Dim formatRange As Excel.Range
         formatRange = shXL.Range("a1")
         formatRange.EntireRow.Font.Bold = True
         shXL.Cells(1, 1).Value = "NOMBRE"
         shXL.Cells(1, 2).Value = "APELLIDOS"
         shXL.Cells(1, 3).Value = "EDAD"
         shXL.Cells(1, 4).Value = "POBLACIÓN"
         shXL.Cells(1, 5).Value = "PROVINCIA"
         shXL.Cells(1, 6).Value = "DIRECCIÓN"
         shXL.Cells(1, 7).Value = "ESTADO"
         shXL.Cells(1, 8).Value = "NIF"

         ' Obtenemos los datos que queremos exportar desde base de datos.
         Dim s As String = ("SELECT * FROM usuario")
         Dim myCommand As New OleDb.OleDbCommand(s)
         myCommand.Connection = conexion
         conexion.Open()
         Dim myReader As OleDb.OleDbDataReader = myCommand.ExecuteReader()

         While myReader.Read()
            ' Cargamos la información en el excel
            shXL.Cells(indice, 1).Value = myReader("NOMBRE")
            shXL.Cells(indice, 2).Value = myReader("APELLIDOS")
            shXL.Cells(indice, 3).Value = myReader("EDAD")
            shXL.Cells(indice, 4).Value = myReader("POBLACION")
            shXL.Cells(indice, 5).Value = myReader("PROVINCIA")
            shXL.Cells(indice, 6).Value = myReader("DIRECCION")
            shXL.Cells(indice, 7).Value = myReader("ESTADO")
            shXL.Cells(indice, 8).Value = myReader("NIF")
            indice += 1
         End While

         ' Cerramos el reader
         myReader.Close()
         ' Mostramos un dialog para que el usuario indique donde quiere guardar el excel
         Dim saveFileDialog1 As New SaveFileDialog()
         saveFileDialog1.Title = "Guardar documento Excel"
         saveFileDialog1.Filter = "Excel File|*.xls"
         saveFileDialog1.FileName = "Usuarios_web"
         saveFileDialog1.ShowDialog()
         ' Guardamos el excel en la ruta que ha especificado el usuario
         wbXl.SaveAs(saveFileDialog1.FileName)
         ' Cerramos el workbook
         appXL.Workbooks.Close()
         ' Eliminamos el objeto excel
         appXL.Quit()
     Catch ex As Exception
         MessageBox.Show("Error al exportar los datos a excel.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
     Finally
         ' Cerramos la conexión y ponemos el cursor por defecto de nuevo
         conexion.Close()
         Me.Cursor = Cursors.Arrow
     End Try

End Sub

Lo único que hay que tener en cuenta es que los datos para realizar la conexión a la base de datos debéis modificarlos, al igual que la consulta con la que obtenemos los datos que queremos exportar

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s