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