Ir al contenido principal

VB.Net - Importar y Exportar Rango de datos de Excel a DataGridView

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
  1. IDE (Visual Studio 2010).
  2. Microsoft Excel 2010 (también aplica a las demás versiones).
  3. LP (Visual Basic.Net).
  • Adicionar Modulo (Mdl_Maestros) al proyecto donde deseas implementar.
  • Crear los Métodos ImportarRango y ExportarDgvExcel

    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
    

Comentarios

Entradas más populares de este blog

Habilitar Usuario HR Oracle

Al realizar la primera instalación del Oracle, el usuario HR por defecto está bloqueado y por ende no podemos loguearnos como dicho usuario, lo que debe hacer son los siguiente pasos, aplicables para Linux o Windows.
1. Conectarse como usuario system o sysdba + contraseña haciendo uso del comando connect.
Usuario: system
Password: xxxx 


2. Hacer uso  del comando alter user hr account unlock desbloqueamos la cuenta.
alter user hr account unlock;

3. Escribimos el comando alter user HR identified by hr; con esto estamos diciendo que la contraseña será hr.

alter user HR identified by hr;

4. Ahora testeamos la conexión con el comando - conn hr/hr@xe. Si deseas después de conectarnos se puede realizar un select a la tabla employees del hr.


Resultado del select realizado
5. Con todos estos pasos realizados ya podemos logearnos desde cualquier IDE como el usuario hr  y la contraseña hr que definimos en el paso 3. 
Para finalizar nos loguearemos con el IDE Oracle SQL Developer.

Espero les sea de utilidad,…

Usuario SYS y SYSTEM - ORACLE

Usuario SYS y SYSTEM
Ambos usuario son creados de forma automática al crear la base de datos ORACLE y se otorga el rol de DBA.

SYS (password por defecto: CHANGE_ON_INSTALL).
SYSTEM (password por defecto: MANAGER).

Lo que se recomienda es cambiar el password de ambos usuarios por el tema de seguridad.

SYS:
Todas las tablas y vistas para el diccionario de datos de la base de datos están almacenados en el esquema SYS. Estas tablas y vistas son críticas para el funcionamiento de la base de datos ORACLE. Para mantener la integridad del diccionario de datos, las tablas del esquema SYS son manipulados solo por la base de datos. Nunca se debería modificar algo o crear tablas en el esquema del usuario SYS.

SYSTEM:
El usuario SYSTEM se utiliza para crear tablas y vistas adicionales que muestran información administrativa, tablas internas y vistas utilizado por varias opciones y herramientas de la base de datos ORACLE. No se recomienda utilizar el esquema SYSTEM para almacenar tablas de interés para usu…

Parámetro de entrada y salida – PL/SQL

Parámetro de entrada y salida – PL/SQL:
Los parámetros de entrada y salida no son los parámetros de inicialización de la base de datos ORACLE. Los parámetros de entra y salida son utilizados mayormente en implementaciones de funciones, procedimientos almacenados o bloques de código bajo el lenguaje del PL/SQL, se considera que ambos parámetros (entra y salida) puedan realizar operaciones en el mismo bloque PL/SQL, es decir, si enviamos un parámetro de entrada hará que cumpla cierta operación y retornara los valores de salida de dicha operación procesada de acuerdo al parámetro de ingresado. Es de acuerdo al caso que nos presenta en la implementación.
Algo importante al definir los parámetros, es saber y considerar cuántos tipos de parámetro existe si solo hablamos de entrada y salida, en realidad mi determinación seria 3 tipos:

Parámetros:

IN – entrada
OUT – salida
IN OUT – entrada salida

Parámetro IN – entrada:
El comportamiento común de estés tipos de parámetros es estar siempre pendiente d…