อ่านหลาย Excel ผ้าปูที่นอนอยู่ใน Listview

0

คำถาม

ฉันกำลังพยายามอ่าน excel แฟ้มนั่นมีหลายผ้าปูที่นอน 1,2,3,4,5,6,7,8,9,10

ฉันต้องอ่านหลายคอลัมน์ของสิ่งที่อยู่ในผ้าปูที่นอนนั่นสำหรับตัวอย่างจากช่วง a1:a20 และ c1:c20

ผลก็คือการเรียกรายการใน listview ฉันพยายามกับหลายคำแนะนำที่ปรากฏอยู่ในที่อภิปรายแต่มันเพียงอนุญาตให้ผมอ่านหนึ่งแผ่นงานและฉันต้องอ่านหลายในเวลาเดียวกัน ยังไงฉันก็ต้องใส่ชุดรหัสที่ผมจะได้ใช้.

ขอบคุณล่วงหน้า

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 สำหรับแต่ละแผ่นงานซึ่งเป็นงั้นก็เพิ่มเข้าไปเป็นวันที่. ขอรหัสนคิดเอาเองว่าคนเดียวกันช่วงจะถูกใช้สำหรับแต่ละแผ่นงานแผ่น. ฉันทำให้ช่วงแปรงทางเพราะมันจะต้องใช้แยกคำสั่งสำหรับกันไม่แปรงทานโอกาสสุดท้ายแล้ว ฉันเชื่อว่ามันจะง่ายกว่าที่จะไม่สนใจที่ extraneous ข้อมูลอยู่ในผลลัพธ์จาก 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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่