我正在尝试将存储为 csv 文件的大量整数导入到名为BeamMap
. .csv 文件仅由整数组成,分隔符为,
,数据周围没有引号(即 ,1,3,-2,44,1
),以及换行符和回车符的行尾字符。我想要做的就是将每个整数放入具有适当行和列的 DataTable 单元格中(每行的列数相同),并且以后能够在我的代码中引用它。我真的不想要代码中绝对必要的任何东西(没有标题、标题、标题等),我需要它相当高效(csv 数组大约为 ~1000 x ~1000)。
谢谢!
我正在尝试将存储为 csv 文件的大量整数导入到名为BeamMap
. .csv 文件仅由整数组成,分隔符为,
,数据周围没有引号(即 ,1,3,-2,44,1
),以及换行符和回车符的行尾字符。我想要做的就是将每个整数放入具有适当行和列的 DataTable 单元格中(每行的列数相同),并且以后能够在我的代码中引用它。我真的不想要代码中绝对必要的任何东西(没有标题、标题、标题等),我需要它相当高效(csv 数组大约为 ~1000 x ~1000)。
谢谢!
使用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
这是一种需要严格格式的简单方法(正如您所提到的):
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
从映射驱动器获取文件并将检索到的数据放入数据集中:
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
另外,不要忘记包括
Imports System.Data.OleDb
如果您希望链接到 DataGridView(阅读后):
Dim bs As New BindingSource
bs.DataSource = dt
DataGridView1.DataSource = bs