Leer múltiples hojas de Excel en un ListView.
Estoy intentando leer un archivo de Excel que tiene varias hojas 1,2,3,4,5,6,7,8,9,10.
Necesito leer varias columnas de esas hojas, por ejemplo del rango a1: a20 y c1: c20.
El resultado debe ser listado en un listview. Estoy intentando con varias sugerencias que aparecen en el foro, pero sólo me permite leer una hoja y necesito leer varias al mismo tiempo.
De todas maneras, incluiré el código que estoy usando.
Gracias de antemano.
Public Class Frm_ImportarLibro
Public Function Obtenerdatos(ByVal ruta As String, ByVal hoja As String, ByVal rango As String) As DataTable
Dim cadenaConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=NO';" & _
"Data Source=" & ruta
Using cnn As New OleDbConnection(cadenaConexion)
Dim cmd As OleDbCommand = cnn.CreateCommand()
cmd.CommandText = String.Format("SELECT * FROM [{0}${1}]", hoja, rango)
Dim da As New OleDbDataAdapter(cmd)
Dim dtTemp As New DataTable("Prueba")
da.Fill(dtTemp)
Dim dt As DataTable = dtTemp.Clone()
Dim rows As DataRow() = dtTemp.Select()
For index As Integer = 0 To rows.Count - 1
Dim row As DataRow = rows(index)
If (row.Item(0) Is DBNull.Value) Then
Exit For
End If
dt.ImportRow(row)
Next
Return dt
End Using
End Function
davy.ai
Para leer múltiples hojas en un archivo de excel, se puede modificar el código de la función
Obtenerdatos
usando un bucle para iterar sobre los nombres de las hojas y concatenar los datos en una datatable. Aquí hay un ejemplo:En esta función actualizada, el parámetro
hojas
es una matriz de nombres de hojas para leer. La datatabledt
se inicializa antes del bucle y se fusiona con cada datatable de cada hoja leída en el bucle. Modifique el código según sea necesario para leer columnas específicas y mostrar los datos en un listview.