CSV ファイルの読み込むには
TextFileldParser を使えばとても簡単。
以下では、タブ区切りの CSV ファイルを読み込むサンプルをご紹介します。
前提は・・・
① 言語は VB.NET (C# に変えるのも簡単なはず)
② フォーム上に DataGridView とボタンがあります
③[Import]ボタンで、CSV ファイルのデータを DataGridView に格納します。
データ読み込み前のフォーム・・・
読み込む CSV ファイルの内容(デリミターはタブ。 テキストエディタで開いています)
[Import]ボタンをクリックすると・・・
[Import]ボタンのコード:
★ 各行の先頭には数個の全角スペースを入れています
(ブログ記事で見やすくするため)
コピペしたときは削除してください。
---------- ここから ---------------------------------------------------------------------------
' ---[Import]CSV ファイル(タブ区切り)を読み込み、DataGridView1 に格納する
Private Sub btn_Import_Click(sender As Object, e As EventArgs) Handles btn_Import.Click
Dim textFile As FileIO.TextFieldParser ' -- 入力するファイル
' --- 入力ファイルを開く
textFile = New FileIO.TextFieldParser("C:\temp\test.csv") ' -- デフォルト encoding は UTF8
' --- デリミターをタブと定義する
textFile.TextFieldType = FileIO.FieldType.Delimited
textFile.SetDelimiters(vbTab) ' -- カンマ区切りの場合はカッコ内を "," にします
' --- 行を文字型配列(currentRow)に読み込み、各列を DataGridView に格納する
Dim currentRow As String() ' -- 文字型配列
Dim myRow As Integer = 0
Dim myCol As Integer = 0
' ---▼▼ 行ループ
While Not textFile.EndOfData
Me.DataGridView1.Rows.Add() ' -- DataGridView に新規行を追加
currentRow = textFile.ReadFields() ' -- 1行を文字型配列に格納
Dim currentColumn As String
' ---▼ 列ループ:1行分の列を埋める
For Each currentColumn In currentRow
Me.DataGridView1(myCol, myRow).Value = currentColumn
myCol += 1
Next ' --▲ 列ループ
myCol = 0
myRow += 1
End While ' --▲▲ 行ループ
' --- 入力ファイルを閉じる
textFile.Close()
' ---
Me.DataGridView1.Rows.RemoveAt(0) ' -- 先頭行は見出し行なので削除
End Sub
---------- ここまで ---------------------------------------------------------------------------
なお、本家の説明「TextFieldParser クラス」もご参照ください。
詳細な説明が得られます。
姉妹編: CSV ファイルへの出力(エクスポート)
【VB.NET】 CSV ファイルにエクスポート はここから
2017年・新春お祝い編
お年賀がわりに・・・ DataGridView のエクスポート
(zip ファイルをダウンロードできます)
---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
TextFileldParser を使えばとても簡単。
以下では、タブ区切りの CSV ファイルを読み込むサンプルをご紹介します。
前提は・・・
① 言語は VB.NET (C# に変えるのも簡単なはず)
② フォーム上に DataGridView とボタンがあります
③[Import]ボタンで、CSV ファイルのデータを DataGridView に格納します。
データ読み込み前のフォーム・・・
読み込む CSV ファイルの内容(デリミターはタブ。 テキストエディタで開いています)
[Import]ボタンをクリックすると・・・
[Import]ボタンのコード:
★ 各行の先頭には数個の全角スペースを入れています
(ブログ記事で見やすくするため)
コピペしたときは削除してください。
---------- ここから ---------------------------------------------------------------------------
' ---[Import]CSV ファイル(タブ区切り)を読み込み、DataGridView1 に格納する
Private Sub btn_Import_Click(sender As Object, e As EventArgs) Handles btn_Import.Click
Dim textFile As FileIO.TextFieldParser ' -- 入力するファイル
' --- 入力ファイルを開く
textFile = New FileIO.TextFieldParser("C:\temp\test.csv") ' -- デフォルト encoding は UTF8
' --- デリミターをタブと定義する
textFile.TextFieldType = FileIO.FieldType.Delimited
textFile.SetDelimiters(vbTab) ' -- カンマ区切りの場合はカッコ内を "," にします
' --- 行を文字型配列(currentRow)に読み込み、各列を DataGridView に格納する
Dim currentRow As String() ' -- 文字型配列
Dim myRow As Integer = 0
Dim myCol As Integer = 0
' ---▼▼ 行ループ
While Not textFile.EndOfData
Me.DataGridView1.Rows.Add() ' -- DataGridView に新規行を追加
currentRow = textFile.ReadFields() ' -- 1行を文字型配列に格納
Dim currentColumn As String
' ---▼ 列ループ:1行分の列を埋める
For Each currentColumn In currentRow
Me.DataGridView1(myCol, myRow).Value = currentColumn
myCol += 1
Next ' --▲ 列ループ
myCol = 0
myRow += 1
End While ' --▲▲ 行ループ
' --- 入力ファイルを閉じる
textFile.Close()
' ---
Me.DataGridView1.Rows.RemoveAt(0) ' -- 先頭行は見出し行なので削除
End Sub
---------- ここまで ---------------------------------------------------------------------------
なお、本家の説明「TextFieldParser クラス」もご参照ください。
詳細な説明が得られます。
姉妹編: CSV ファイルへの出力(エクスポート)
【VB.NET】 CSV ファイルにエクスポート はここから
2017年・新春お祝い編
お年賀がわりに・・・ DataGridView のエクスポート
(zip ファイルをダウンロードできます)
---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・
ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
とありまして、(vbTab)を(",")にしてみたのですができませんでした。
CSVでカンマ区切りにしているのですが、カンマで同じ行で横の列に入力したいのですが同じセルにすべての項目が表示されてしまいます。どのように修正したらいいでしょうか?
申し訳ありませんが、VBA のソースコードと入力ファイル(の数行分)をご提示くださいますか?
書いていただいている内容だけでは何とも言えませんので・・・