VB.NET 读取CSV文件到datatable中后,数据被重新排序了,请大神帮忙看看哪里有问题

hcyang1422 2017-04-13 03:49:18
用下面的函数从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是已被按数字,字符的顺序进行排序了。
...全文
289 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcyang1422 2017-04-13
  • 打赏
  • 举报
回复
我需要的是按原来的顺序格式排列,该用什么语句实现?
Tiger_Zhao 2017-04-13
  • 打赏
  • 举报
回复
很正常啊。
数据库表有自己的存放策略(通常是按主键排序)。
至于你要按某种排序方式显示,查询语句中加 ORDER BY 啊。

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧