Buenas noches esta vez he decidido crear un blog de programación en VB.Net para exponer codigo aplicable a winform y a webform, espero que sirva de ayuda para personas que anden buscando funciones o formas de hacer diversas cosas, aquí publicare código que he desarrollado así como código que vaya saliendo con el trajinar del trabajo...
en esta primera ocasión les voy a poner como cargar en una tabla una hoja de excel:
Problema: Cargar en una datatable una hoja de excel.
Requerimientos:
- Dos datatable(uno para llenar con las hojas del documento y otro para devolver como resultado de la funcion).
- Un comando de ole para realizar operaciones con documentos de office.
- Una variable de tipo string que tendra la cadena de conexión con excel.
- Un Adaptador de oledb para poblar la tabla a devolver.
- Un Objeto conexión de tipo oledb para conectar con el documento.
Estas son los requerimientos que se necesitan para realizar la función requerida, ahora si a la función, esta función recibirá un parámetro, que sera la ruta del archivo excel.
A continuación les muestro la función no comente nada por que la lógica es sencilla pero si alguien tiene alguna duda me pueden dejar un mensaje por este medio.
Private Function cargarExcel(ByVal ruta As String) As DataTable
Dim dt As New DataTable
Dim dtExcel As New DataTable
Dim cmdExcel As New OleDbCommand
Try
Dim conn As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ruta & ";Extended Properties=""Excel 12.0;HDR=YES"""
Using olConexion As OleDbConnection = New OleDbConnection(conn)
olConexion.Open()
Dim oda As New OleDbDataAdapter
dt = olConexion.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
Dim nombreHoja As String = dt.Rows(0)("TABLE_NAME").ToString()
cmdExcel.Connection = olConexion
cmdExcel.CommandText = "SELECT * FROM [" & nombreHoja & "]"
oda.SelectCommand = cmdExcel
oda.Fill(dtExcel)
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return dtExcel
End Function
Saludos y así como esta función iré publicando según me sea posible.
Ojo esta funcion carga solamente la primera hoja, en el segundo aporte pondré como cargar varias hojas o un nombre determinado por el usuario.
Hasta pronto