在VB.net中将csv数据转换为DataTable

时间:2012-06-20 11:36:26

标签: vb.net csv import multidimensional-array datatable

我正在尝试将存储为csv文件的大量整数导入名为BeamMap的VB.Net DataTable中。 .csv文件仅包含整数,分隔符为,,数据周围没有引号(即。1,3,-2,44,1),以及换行和回车符的行尾字符。我想要做的就是将每个整数放入一个具有适当行和列的DataTable单元格中(每行有相同数量的列),并且稍后可以在我的代码中引用它。我真的不想要任何超过代码中绝对必要的东西(没有标题,标题,标题等),我需要它相当有效(csv数组约为~1000 x~1000)。

谢谢!

4 个答案:

答案 0 :(得分:15)

使用OleDb提供程序读取CSV并填充DataTable

 Dim folder = "c:\location\of\csv\files\"
 Dim CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & folder & ";Extended Properties=""text;HDR=No;FMT=Delimited"";"
 Dim dt As New DataTable
 Using Adp As New OleDbDataAdapter("select * from [nos.csv]", CnStr)
       Adp.Fill(dt)
 End Using

答案 1 :(得分:4)

这是一种简单的方法,需要严格的格式(正如您所提到的):

Dim lines = IO.File.ReadAllLines(path)
Dim tbl = New DataTable
Dim colCount = lines.First.Split(","c).Length
For i As Int32 = 1 To colCount
    tbl.Columns.Add(New DataColumn("Column_" & i, GetType(Int32)))
Next
For Each line In lines
    Dim objFields = From field In line.Split(","c)
                 Select CType(Int32.Parse(field), Object)
    Dim newRow = tbl.Rows.Add()
    newRow.ItemArray = objFields.ToArray()
Next

答案 2 :(得分:1)

从映射驱动器获取文件并将检索到的数据放入数据集中:

Dim folder = "Z:\"
Dim CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & folder & ";Extended Properties=""text;HDR=No;FMT=Delimited"";"

Dim dssample As New DataSet
Using Adp As New OleDbDataAdapter("select * from [samplecsv.csv]", CnStr)
    Adp.Fill(dssample)
End Using

If dssample.Tables.Count > 0 Then
    'some code here
End If

答案 3 :(得分:0)

另外,不要忘记包含

Imports System.Data.OleDb

如果您希望链接到DataGridView(读取后):

Dim bs As New BindingSource
bs.DataSource = dt
DataGridView1.DataSource = bs