Csvファイルとして保存されている整数の大きな配列をBeamMap
というVB.NetDataTableにインポートしようとしています。 .csvファイルは整数のみで構成され、区切り文字は,
で、データを引用符で囲みません(つまり、1,3,-2,44,1
)。改行とキャリッジリターンの行末文字です。私がやりたいのは、各整数を適切な行と列(各行に同じ数の列があります)を持つDataTableセルに入れ、後でコードで参照できるようにすることです。コードに絶対に必要なもの(タイトル、キャプション、見出しなどがない)以外は本当に必要ありません。また、かなり効率的である必要があります(csv配列は約〜1000 x〜1000です)。
ありがとう!
これは、厳密な形式を必要とする単純なアプローチです(あなたが言及したように):
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
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 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