用下面的函数从CSV文件中读取数据到datatable中,然后再用datagridview显示,结果发现数据到datatable中后,被排序了,请帮忙看看哪里出错了,函数是在网上找的。
Public Function CSVToDataTable(ByVal FilePath As String) As DataTable
Try
If (System.IO.File.Exists(FilePath)) Then
Dim fi As New System.IO.FileInfo(FilePath)
'HDR=NO 第一行当数据处理
'HDR=YES(默认)第一行当列处理
Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Text;HDR=NO';Data Source=" & fi.DirectoryName
Dim objConn As New System.Data.OleDb.OleDbConnection(sConnectionString)
objConn.Open()
Dim strColum As String
Dim objCmdSelect As New Data.OleDb.OleDbCommand("SELECT Distinct * FROM " & fi.Name, objConn)
Dim objAdapter As New Data.OleDb.OleDbDataAdapter
Dim dt As New DataTable
objAdapter.SelectCommand = objCmdSelect
objAdapter.Fill(dt)
objConn.Close()
'Debug.Print(dt(0))
MsgBox(dt.Rows(0)(0).ToString())
DataGridView1.DataSource = dt
Label1.Text = DataGridView1.Rows.Count - 1
Return dt
End If
Catch ex As Exception
MsgBox(ex.ToString())
Return Nothing
End Try
End Function
CSV文件前面数据截图如下

数据在datagridview中显示如下

用MsgBox(dt.Rows(0)(0).ToString())查看出来的数据是-1,因此确定是数据进入datatable是已被按数字,字符的顺序进行排序了。