»
COMO ACCEDER A EXCEL CON ADO.NET EN VISUAL BASIC 2012
Programación, PHP, TRABAJAR CON BASE DE DATOS

COMO ACCEDER A EXCEL CON VISUAL BASIC 2012

Visual Basic 2012 tiene una variedad de objetos para acceder a fuentes de base de datos, como Access, SQL Server, MySQL, etc. Como también podemos acceder a fuente de datos de archivos Excel de la misma forma que accedemos a la base de datos

En este artículo usaremos el objeto ADO para acceder a la fuente de datos creado en Excel y manipular como si fuera una base de datos.

Conociendo al objeto ADO.

Microsoft  ofrece una solución para acceder a los datos una de ellas es la tecnología de accesos a datos OLE DB como proveedor de datos y objetos ADO (ActiveX Data Objects – Objetos ActiveX para acceso a datos).

El modelo de objeto ADO es una colección de objetos programables, que soportan el modelo de objeto componente (COM) y la automatización OLE, que pueden interaccionar con la tecnología OLE DB.

Usaremos el Objeto Connection y Recordset del modelo de objetos ADO.

Usaremos el proveedor de datos Microsoft Jet para acceder a una hoja de cálculo usaremos la siguiente sintaxis.

Provider=proveedor;Data Source=base de datos;Extended Properties=Excel 8.0;

EJEMPLO CREANDO UN PROYECTO ACCEDIENDO A EXCEL Y GUARDANDO A SQL SERVER CON ADO.NET.

Para iniciar debemos tener nuestra hoja de calculo, como en una base de datos las tablas tienen columnas con sus respectivos nombres, en nuestra hoja de calculo la primera fila será tomado como las columnas de la tabla.

En este caso tenemos 5 columnas y sus nombres respectivos son: ITEM, UBIGEO, Departamento, Provincia, Distrito. Si tu tabla no tiene un nombre indicado visual basic al acceder tomara la primera fila: con los nombres 1,01, AMAZONAS, CHACHAPOYAS,CHACHAPOYAS.

 

Creamos un proyecto en Visual Basic 2012

Agregamos la referencia al proyecto para usar el modelo de objetos ADO.NET, hacemos click en el menú: Proyecto / Agregar Referencia.

Marcamos el check Microsoft ActiveX Data Objects 2.1 Library 2.1

Agregamos un Formulario, un DataGridView y un Botón. Así debe quedar tu formulario.

Agregamos los campos que queremos mostrar en el DataGridView, hacemos clieck en el DataGridView y en la parte superior derecha sale un pequeño tirangulo, hacer clieck y escoger editar columnas. La propiedad DataPropertyName tiene que tener el mismo nombre que la propiedad name, como se ve en la figura.

Tu formulario debe quedarte así.

Terminado con la etapa de diseño ahora comenzamos la etapa de codificación. Hacemos doble click en el formulario y digitamos el siguiente código.

Public Class frmAdo_con_Excel

    Dim rs As New ADODB.Recordset

    Dim rsGuardar As New ADODB.Recordset

    Dim ccn As New ADODB.Connection()

    Dim cn As New ADODB.Connection()

    Dim i As Integer

    Private Sub frmAdo_con_Excel_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'el parametro Data Source es donde ´pones la ruta de tu hoja de calculo

        ccn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Pepito\Dropbox\articulos\Ubigeos.xls;Extended Properties=Excel 8.0;"

        ccn.Open()

        rs.Open("select distinct Departamento from [UBIGEO$]", ccn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

        '[UBIGEO$] es el nombre de la hoja en el archivo excel

        '[UBIGEOS$C1:C3299] abrios la hoja y el rango de columnas

        'rs.Open("select * from [UBIGEOS$C1:C3299]", ccn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

        If Not rs.EOF Then

            rs.MoveFirst()

            i = 1

            While Not rs.EOF

                DataGridView1.Rows.Add(i, rs.Fields("Departamento").Value)

                rs.MoveNext()

                i = i + 1

            End While

        End If

        rs.Close()

    End Sub

   

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim i As Integer

        cn.Provider = "SQLOLEDB"

        cn.ConnectionString = "server=pepito;database=BTEC;uid=sa;pwd=123456;"

        cn.Open()

        rsGuardar.Open("tblDepartamento", cn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

        For i = 1 To DataGridView1.Rows.Count - 1

            rsGuardar.AddNew()

            rsGuardar("codDepartamento").Value = DataGridView1.Rows(i - 1).Cells("codDepartamento").Value()

            rsGuardar("nomDepartamento").Value = DataGridView1.Rows(i - 1).Cells("Departamento").Value()

            rsGuardar.Update()

        Next

        rsGuardar.Close()

    End Sub

End Class