zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET csvファイルの読み込みを行う方法

VB.NETcsvファイルの読み込みを行う方法を紹介します。

カンマ区切りだけでなく、任意の区切り文字を指定したり、ダブルクォーテーションの囲いなどにも対応します。

Using parser As New FileIO.TextFieldParser(FilePath, Encoding.GetEncoding("shift_jis"))
    'カンマ区切り
    parser.TextFieldType = FileIO.FieldType.Delimited
    parser.SetDelimiters(",")

    'ダブルクォーテーション囲い
    parser.HasFieldsEnclosedInQuotes = True

    'フィールドの空白を削除(トリム)
    parser.TrimWhiteSpace = True

    '1行ずつレコードを読込
    While Not parser.EndOfData
        Dim record As String()
        Try
            record = parser.ReadFields()
        Catch ex As Exception
            '不正レコードの場合は次のレコード
            Continue While
        End Try

        'csvの内容がString配列にセットされる
    End While
End Using

解説

ダブルクォーテーション囲いなどを考えると自力で文字列を解析するのは大変なので、FileIO.TextFieldParserを使用します。

第1引数に読み込むcsvファイルのパスを指定し、第2引数にはファイルの文字コードを指定します。

Using parser As New FileIO.TextFieldParser(ファイルパス, 文字コード)

parserのプロパティで区切り文字やダブルクォーテーション囲いなど、読み込むcsvファイルのフォーマットを指定します。

parser.ReadFields()csvの内容がString配列にセットされます。

形式が不正の場合はエラーが発生するのでTry Catchで不正レコードかどうかを判定しています。


関連記事