【VB.NET】CSVの扱い

TextFieldParserクラス

 * CSVファイルを読み込みに使用
 * .NET 2.0以降で対応
 * 名前空間:Microsoft.VisualBasic.FileIOだが、C#でも使える

定義

Dim parser As New TextFieldParser("aaa.csv", _
    System.Text.Encoding.GetEncoding("Shift_JIS"))

区切り文字

SetDelimitersメソッド

* SetDelimitersメソッドを呼び出して区切り文字を設定
parser.TextFieldType = FieldType.Delimited
parser.SetDelimiters(",")

トリム

TrimWhiteSpaceプロパティ

* フィールド前後の空白文字を削除したくない場合にはTrimWhiteSpaceプロパティをfalseに設定する(デフォルトはtrue)

その他

HasFieldsEnclosedInQuotesプロパティ

* すべてのフィールドが単純にコンマで区切られているものとして処理したい場合には、HasFieldsEnclosedInQuotesプロパティをfalseに設定する(デフォルトはtrue)

サンプル

Using parser As New TextFieldParser(Me.FileUpload1.PostedFile.FileName, _
                                    System.Text.Encoding.GetEncoding("Shift_JIS"))

    parser.TextFieldType = FieldType.Delimited
    parser.SetDelimiters(",") ' 区切り文字はコンマ

    ' parser.HasFieldsEnclosedInQuotes = False
    ' parser.TrimWhiteSpace = False

    Me.Label1.Text = String.Empty

    While Not parser.EndOfData
        Dim row As String() = parser.ReadFields() ' 1行読み込み

        For Each field As String In row
            field = field.Replace(vbCrLf, "<br />") ' 改行を<br />で表示
            Me.Label1.Text += (field & vbTab) ' TAB区切りで出力
        Next
        Me.Label1.Text += "<br />"
    End While
End Using