읽는 여러 개의 시트를 엑셀에서는 컨트롤

0

질문

를 읽을 엑셀 파일이 있는 여러 시트 1,2,3,4,5,6,7,8,9,10

내가 읽을 필요가 여러 가지 열에 그 장을 예를 들어 범위에서 a1:a20 및 c1:c20

결과 목록에서 컨트롤,내가 노력하고 있으로 여러 가지 제안에 나타나는 포럼이지만,그것만 읽을 수있을 것 한 장 나는 읽을 필요가 동시에 여러. 어쨌든 나는 코드가 나를 사용합니다.

사전에 감사합니다

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
1

최고의 응답

0

저는 이것을 믿는 것이 문제의 반복을 통해 시트와 로드 DataTable 에 대한 각 장은 다음에 추가합니다. 나의 코드에서는 동일한 범위를 사용에 대한 각각의 시트입니다. 나는 범위에 인접한 것이기 때문에 필요한 별도의 명령에 대한 각각의 연속되지 않는 범위. 나는 그것을 믿는 것이 더 쉽을 무시하는 불필요한 데이터는 결과 DataTable.

Private cadenaConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=NO';Data Source="
Private rango As String = "A1:C20"

Private Function GetXLSheetNames(path As String) As List(Of String)
    Dim SheetNames As New List(Of String)
    Dim dt As DataTable
    Using cn As New OleDbConnection(cadenaConexion & path)
        cn.Open()
        dt = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
    End Using
    For Each row As DataRow In dt.Rows
        Dim s = row("Table_Name").ToString
        SheetNames.Add(s)
    Next
    Return SheetNames
End Function

Public Function Obtenerdatos(ByVal ruta As String, ByVal hoja As String, ByVal rango As String) As DataSet
    Dim ds As New DataSet
    Dim lst = GetXLSheetNames(ruta)
    Using cnn As New OleDbConnection(cadenaConexion & ruta),
            cmd As New OleDbCommand()
        cmd.Connection = cnn
        cnn.Open()
        For Each s In lst
            Dim dt As New DataTable(s)
            cmd.CommandText = $"SELECT * FROM [{s}{rango}]"
            Using reader = cmd.ExecuteReader
                dt.Load(reader)
            End Using
            ds.Tables.Add(dt)
        Next
    End Using
    Return ds
End Function
2021-11-24 07:33:37

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................