使用不带列标题的数据从excel导入的数据集填充二维数组

使用不带列标题的数据从excel导入的数据集填充二维数组,excel,vb.net,dataset,oledb,Excel,Vb.net,Dataset,Oledb,我正在尝试使用不带列标题的数据从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 OpenFileDia

我正在尝试使用不带列标题的数据从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(双精度)(“[A]”)中的[A]似乎是必需的。是否有排除列标题的方法?

您可以根据
数据表中的列数和行数创建数组,然后按列索引和行索引遍历
数据表和数组,例如

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

使用序数。类似于:
dim thecolumnidex as integer=1 dim arrCol0=dts.Tables(0).AsEnumerable().Select(函数(r)Convert.ToDouble((r(columnidex))).ToArray()
r.Field(双精度)(columnidex)
可以。顺便说一句,如果您只需要一个数据表,请填写一个数据表而不是数据集。谢谢Jimi。数据表比数据集有什么好处?您使用的是数据表。您对数据集不做任何操作。因为您实际上不使用数据表,所以添加开销是没有用的:只填写一个数据表。