web-dev-qa-db-ja.com

csvデータをVB.netのDataTableに変換します

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

ありがとう!

6
Matt

これは、厳密な形式を必要とする単純なアプローチです(あなたが言及したように):

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
4
Tim Schmelter

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
16
adatapost

マップされたドライブからファイルを取得し、取得したデータをデータセットに配置します。

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
1
johann

また、含めることを忘れないでください

Imports System.Data.OleDb

また、DataGridViewにリンクする場合(読み取り後):

Dim bs As New BindingSource
bs.DataSource = dt
DataGridView1.DataSource = bs
0
Daniel Bonetti