使用没有列标题的数据从excel导入的数据集中填充2D数组

问题描述 投票:0回答:1

我正在尝试使用没有列标题的数据从excel导入的数据集中填充数组。我的代码如下:

Dim conn As OleDbConnection
Dim dta As OleDbDataAdapter
Dim dts As DataSet
Dim excel As String

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Try

        Dim OpenFileDialog As New OpenFileDialog
        With OpenFileDialog
            .InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
            .Filter = "All Files (*.*) | *.*"

            If .ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                Dim fi As New IO.FileInfo(.FileName)
                Dim FileName As String = .FileName
                excel = fi.FullName
                Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & excel & ";Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
                conn = New OleDbConnection(connString)
                dta = New OleDbDataAdapter("Select * from [Sheet1$]", conn)
                dts = New DataSet
                dta.Fill(dts, "[Sheet1$]")
                Dim arrCol0 As Double() = (From myRow In dts.Tables(0).AsEnumerable
                                           Select myRow.Field(Of Double)("[A]")).ToArray
                conn.Close()
            End If
        End With

    Catch ex As Exception
        MsgBox(ex.Message)
        conn.Close()
        Exit Sub
    End Try
End Sub

似乎是“选择myRow.Field(Of Double)(“ [A]”)”中的[A]。有没有一种方法可以排除列标题?

excel vb.net dataset oledb
1个回答
0
投票

您将基于DataTable中的列和行数创建数组,然后通过列索引和行索引遍历DataTable和数组,例如

Dim arr(table.Columns.Count - 1, table.Rows.Count - 1) As Double

For columnIndex = 0 To arr.GetUpperBound(0)
    For rowIndex = 0 To arr.GetUpperBound(1)
        arr(columnIndex, rowIndex) = CDbl(table.Rows(rowIndex)(columnIndex))
    Next
Next
© www.soinside.com 2019 - 2024. All rights reserved.