我正在尝试使用没有列标题的数据从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]。有没有一种方法可以排除列标题?
您将基于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