北の窓から(芦田っち)

PC関連と私的雑感のブログ。
2015年7月10日、カッコ内に名前を加えました。昔の友だちに気付いてほしくて・・・

【VB.NET】 CSV ファイルの読み込みはこんなに簡単・・・TextFieldParser

2016-05-06 12:17:20 | 北窓舎
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 ファイルをダウンロードできます)
---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・


ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 【VB.NET】 CSV ファイルへの... | トップ | 明日は何の日? Windows Upda... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (K)
2022-06-23 14:58:55
textFile.SetDelimiters(vbTab)    ' -- カンマ区切りの場合はカッコ内を "," にします
とありまして、(vbTab)を(",")にしてみたのですができませんでした。
CSVでカンマ区切りにしているのですが、カンマで同じ行で横の列に入力したいのですが同じセルにすべての項目が表示されてしまいます。どのように修正したらいいでしょうか?
返信する
VBAのソースコードをお見せください (北窓舎のオヤヂ)
2023-06-21 06:50:49
unknown (K) さん、
申し訳ありませんが、VBA のソースコードと入力ファイル(の数行分)をご提示くださいますか?
書いていただいている内容だけでは何とも言えませんので・・・
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

北窓舎」カテゴリの最新記事