Simple ejemplo para cargar un rango de una hoja de Excel en un
DataGridView
El siguiente es un simple código fuente para poder conectarse a una hoja de un libro, leer un rango de datos y mostrarlos o cargarlos en un control de tipo DataGridView.Para el ejemplo colocar en un Form los siguientes controles:
- Un TextBox : llamado txtRange ( Para indicar el rango a cargar en la grilla)
- Un DataGridView
- Un control Button
Option Explicit On
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Cargar"
txtRange.Text = "A1:C15"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' // Pasar valores para Leer el rango
loadRange("c:\book1.xls", "sheet1", txtRange.Text, DataGridView1)
End Sub
' ----------------------------------------------------------------------------------
' // Subrutina para conectar al libro Excel y obtener el rango de datos
' ----------------------------------------------------------------------------------
Private Sub loadRange(ByVal sFileName As String, _
ByVal sSheetName As String,ByVal sRange As String, _
ByVal dv As DataGridView)
Try
' // Comprobar que el archivo Excel existe
If System.IO.File.Exists(sFileName) Then
Dim objDataSet As System.Data.DataSet
Dim objDataAdapter As System.Data.OleDb.OleDbDataAdapter
' // Declarar la Cadena de conexión
Dim sCs As String = "provider=Microsoft.Jet.OLEDB.4.0; " & "data source=" & sFileName & "; Extended Properties=Excel 8.0;"
Dim objOleConnection As System.Data.OleDb.OleDbConnection
objOleConnection = New System.Data.OleDb.OleDbConnection(sCs)
' // Declarar la consulta SQL que indica el libro y el rango de la hoja
Dim sSql As String = "select * from " & "[" & sSheetName & "$" & sRange & "]"
' // Obtener los datos
objDataAdapter = New System.Data.OleDb.OleDbDataAdapter(sSql, objOleConnection)
' // Crear DataSet y llenarlo
objDataSet = New System.Data.DataSet
objDataAdapter.Fill(objDataSet)
' // Cerrar la conexión
objOleConnection.Close()
' // Enlazar DataGrid al Dataset
With dv
.DataSource = objDataSet
.DataMember = objDataSet.Tables(0).TableName
End With
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
End Class
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Cargar"
txtRange.Text = "A1:C15"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' // Pasar valores para Leer el rango
loadRange("c:\book1.xls", "sheet1", txtRange.Text, DataGridView1)
End Sub
' ----------------------------------------------------------------------------------
' // Subrutina para conectar al libro Excel y obtener el rango de datos
' ----------------------------------------------------------------------------------
Private Sub loadRange(ByVal sFileName As String, _
ByVal sSheetName As String,ByVal sRange As String, _
ByVal dv As DataGridView)
Try
' // Comprobar que el archivo Excel existe
If System.IO.File.Exists(sFileName) Then
Dim objDataSet As System.Data.DataSet
Dim objDataAdapter As System.Data.OleDb.OleDbDataAdapter
' // Declarar la Cadena de conexión
Dim sCs As String = "provider=Microsoft.Jet.OLEDB.4.0; " & "data source=" & sFileName & "; Extended Properties=Excel 8.0;"
Dim objOleConnection As System.Data.OleDb.OleDbConnection
objOleConnection = New System.Data.OleDb.OleDbConnection(sCs)
' // Declarar la consulta SQL que indica el libro y el rango de la hoja
Dim sSql As String = "select * from " & "[" & sSheetName & "$" & sRange & "]"
' // Obtener los datos
objDataAdapter = New System.Data.OleDb.OleDbDataAdapter(sSql, objOleConnection)
' // Crear DataSet y llenarlo
objDataSet = New System.Data.DataSet
objDataAdapter.Fill(objDataSet)
' // Cerrar la conexión
objOleConnection.Close()
' // Enlazar DataGrid al Dataset
With dv
.DataSource = objDataSet
.DataMember = objDataSet.Tables(0).TableName
End With
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
End Class
Nota. Ejemplo probado con Excel 2000 y Visual basic 2005
Gracias, no sabes cuanto me costo encontrar esta solución
ResponderEliminarTe pasaste =)