El objetivo de este pequeño articulo es conocer la simplicidad de importar un rango establecido de datos de Excel a un DataGridView; así mismo exportar los datos desde el DataGridView a Excel. Simple pero de gran importancia para implementar nuestras aplicaciones.
Requisitos para el Desarrollos
- IDE (Visual Studio 2010).
- Microsoft Excel 2010 (también aplica a las demás versiones).
- Visual Basic.Net con Lenguaje de Programación.
- Adicionar Modulo (Mdl_Maestros) al proyecto donde deseas implementar.
Module Mdl_Maestro
Dim strSql As String = String.Empty 'Por defecto (vacío)
Dim strRango As String = "B7:AU" 'Rango seleccionado (solo lo que se exportara)
Dim ObjDttImp As DataTable 'Importar archivo excel
Dim ObjDataAdapter As OleDb.OleDbDataAdapter
Dim ObjOleConnection As OleDb.OleDbConnection
Dim xlApp As New Excel.Application ' Aplicación Excel
Dim wb As Excel.Workbook ' Libro de trabajo
Public ObjdttExp As DataTable
Public Sub ImportaRango(ByVal sFileName As String, ByVal dgv As DataGridView, ByVal iTrans As Integer)
Try
'Comprobar que el archivo Excel existe
If System.IO.File.Exists(sFileName) Then
Dim sCs As String = "provider=Microsoft.Jet.OLEDB.4.0; " & "data source=" & sFileName & "; Extended Properties=Excel 8.0;"
ObjOleConnection = New System.Data.OleDb.OleDbConnection(sCs)
wb = xlApp.Workbooks.Open(Filename:=sFileName)
For Each sheet As Excel.Worksheet In wb.Worksheets
Select Case iTrans
Case 1 'where Transacció in ('A','B') and Producto = 1 order by Transacció (Aca mismo puedo filtrar sin registro vacio)
strSql = "select * from " & "[" & sheet.Name & "$" & strRango & "] where lote <> null"
'Case 2 (implementar, si asi lo requiere)
End Select
Next
'Obtener los datos
ObjDataAdapter = New System.Data.OleDb.OleDbDataAdapter(strSql, ObjOleConnection)
'Crear DataTable y llenarlo
ObjDttImp = New DataTable
ObjDataAdapter.Fill(ObjDttImp)
'Cerrar la conexión
ObjOleConnection.Close()
'Enlazar DataGrid al DataTable
dgv.DataSource = ObjDttImp
wb.Close(True)
xlApp.Quit()
Else
MsgBox("No se ha encontrado el archivo: " & sFileName, MsgBoxStyle.Exclamation)
End If
Exit Sub
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Public Sub ExportarDgvExcel(ByVal Dgv As DataGridView)
Dim FileFichero As New SaveFileDialog()
FileFichero.Filter = "Excel (*.xls)|*.xls"
Try
If FileFichero.ShowDialog() = DialogResult.OK Then
Dim aplicacion As Microsoft.Office.Interop.Excel.Application
Dim libros_trabajo As Microsoft.Office.Interop.Excel.Workbook
Dim hoja_trabajo As Microsoft.Office.Interop.Excel.Worksheet
aplicacion = New Microsoft.Office.Interop.Excel.Application()
libros_trabajo = aplicacion.Workbooks.Add()
hoja_trabajo = DirectCast(libros_trabajo.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet)
'Definir Cabecera para la exporación
For c As Integer = 0 To Dgv.Columns.Count - 1
hoja_trabajo.Cells(1, c + 1).value = Dgv.Columns(c).HeaderText
Next
'Definir Filas para la exportación
For r As Integer = 0 To Dgv.RowCount - 1
For c As Integer = 0 To Dgv.Columns.Count - 1
hoja_trabajo.Cells(r + 2, c + 1).value = Dgv.Item(c, r).Value
Next
Next
With aplicacion
.StandardFont = "Arial"
.StandardFontSize = "8"
End With
With hoja_trabajo.Cells.Range("A1:AU1").Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 8
End With
libros_trabajo.SaveAs(FileFichero.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal)
libros_trabajo.Close(True)
aplicacion.Quit()
End If
Catch ex As Exception
Throw ex
End Try
End Sub
End Module
1 Comentarios
A mi me funcionó a la perfección el video de este canal: https://www.youtube.com/watch?v=N_P6yfD6aJ0 Saludos
ResponderBorrar