Csvファイルを読み込みDataGridViewへ表示してみる
概要
Csvファイルを読み込みDataGridViewへ表示します。
なお、Csvファイル1行目はヘッダー行として扱い
DataColumnを生成します。
準備
Button.Button1(DTTest呼び出し用)
DataGridView.DataGridView1
を設置してください。
適当な場所へ以下のようなCsvデータファイルを作成しましょう。
TestData.csv
教科,点数
国語,24
数学,75
理科,67
社会,37
赤点2教科ありますね… (爆)
サンプルコード
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
CsvToGrid()
End Sub
Sub CsvToGrid()
Dim Path As String = "D:\Temp\TestData.csv" 'CsvファイルのPathを指定
Dim SR As New StreamReader(Path) 'StreamReader
Dim linebuf As String 'データ保持用'DataGrid初期化
DataGridView1.Columns.Clear()'Csvファイルより1行読込(ヘッダー行)
linebuf = SR.ReadLine()'データが無ければ終了
If linebuf = Nothing Then Exit Sub'DataGridColum(列)生成
Dim ColArr() As String = linebuf.Split(",")
For Each buf In ColArr
DataGridView1.Columns.Add(buf, buf)
Next
Do'Csvファイルより2行目以降読込み
linebuf = SR.ReadLine()'データが無ければループ終了
If linebuf = Nothing Then Exit DoDim RowArr() As String = linebuf.Split(",")
'DataGrid行を追加
DataGridView1.Rows.Add(RowArr)
LoopSR.Close()
End Sub
解説
StreamReaderを使い、ReadLine()で1行ずつCSVファイルの内容を読み取っています。
ReadLine()を呼ぶ度に、Csvファイルの次の行の読み込みを行います。
後は、Split()を使い、","(カンマ)を機切り文字としてデータ毎に分割を行い
DataGridColumの生成、および配列データでRowを追加しています。
StreamReaderの動作中は、対象ファイルがロックされます。
処理が終わったら、Close()しましょう。
尚、Csvファイルは直接DataTableに読み込むことも可能ですので
機会がありましたら記事にしたいと思います。
実行結果