ここではTextFieldParserクラスを使ってCSVファイルを読み込む方法について紹介します。
TextFieldParserクラスとは
Microsoft.VisualBasic.FileIO名前空間にあるTextFieldParserクラスを使用することで、指定した区切りのCSVファイルを簡単に読み込むことができます。
以下はTextFieldParserクラスの主なプロパティです。
プロパティ | 説明 |
---|---|
Delimiters | テキスト ファイルの区切り記号を定義します。 |
EndOfData | 現在のカーソル位置とファイルの終端との間に、空行またはコメント行以外のデータが存在しない場合、True を返します。 |
HasFieldsEnclosedInQuotes | 区切り記号入りファイルを解析する場合に、フィールドが引用符で囲まれているかどうかを示します。 フィールドが引用符で囲まれている場合は True。それ以外の場合は False。 |
LineNumber | 現在の行番号を返します。ストリームから取り出す文字がなくなった場合は -1 を返します。 |
TrimWhiteSpace | フィールド値から前後の空白をトリムするかどうかを示します。 |
CSVファイルを読み込む
テスト用に以下のCSVファイルを用意します。文字コードはShift_JISです。
地方区分,都道府県番号,都道府県名,県庁所在地
北海道地方,1,北海道,札幌市
東北地方,2,青森県,青森市
東北地方,3,岩手県,盛岡市
東北地方,4,宮城県,仙台市
東北地方,5,秋田県,秋田市
東北地方,6,山形県,山形市
東北地方,7,福島県,福島市
次のサンプルプログラムでは、CSVファイルを読み込んでコンソールに表示するプログラムです。
Imports System
Imports System.Text
Imports Microsoft.VisualBasic.FileIO
Module Program
Sub Main(args As String())
' エンコーディング プロバイダーを登録
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
Try
Using parser As New TextFieldParser("C:\temp\都道府県.csv",
Encoding.GetEncoding("Shift_JIS"))
' カンマ区切りの読み取りを指定する
parser.TextFieldType = FieldType.Delimited
parser.SetDelimiters(",")
' ファイルの終端までループする
While Not parser.EndOfData
Dim field As String() = parser.ReadFields()
' /(スラッシュ)で区切る
For Each item In field
Console.Write(item & "/")
Next
Console.WriteLine()
End While
End Using
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
End Module
以上、TextFieldParserクラスを使ってCSVファイルを読み込む方法について解説しました。