ホーム > SQL Server, VB.NET, コンピュータ, データベース > VB.NET Tips TextFieldParserクラスでCSVファイルの読み込み、解析

VB.NET Tips TextFieldParserクラスでCSVファイルの読み込み、解析

2009 年 4 月 14 日

TextFieldParserクラスでCSVファイルの読み込み

photo by village9991

データを扱うソフトなら、たいてい出力方法として、対応しているCSV形式と呼ばれるテキストファイル。

引用符と区切り文字で、データコピーが簡単に出力され、データの再利用にはよく使用されますよね。

CSV形式ファイルのインポートができれば、他ソフトで作成した住所録などが再利用できる可能性が広がります。

ひいては、利用ユーザの拡大につながりますので、インポート、エクスポートは必須機能ですね。

さて、CSV形式をインポート、エクスポートするには、引用符、区切り文字を認識して、正しくデータ列、データ項目を解析、切り分けできれば可能となります。

普通、正規表現を使用し、データ列ごとに解析し、データ項目を配列に格納する方法をとっていましたが、.NET Framework2.0以降から、TextFieldParserクラスなるものが導入されCSV形式の解析などがお手軽に行えるようになりました。

このパース処理が簡単に行えると、後は、生成データを読み書きするだけとなるので、ほんと、楽チンですね!


    Public Function CSVDataFieldRead(ByVal FileName As String, _
                ByVal Delimiter As String, ByVal encode As Encoding)
        CSVDataFieldRead = False
        Try
            Dim csvRecords As New System.Collections.ArrayList()
            Dim TextFP As New FileIO.TextFieldParser(FileName, encode)

            TextFP.TextFieldType = FileIO.FieldType.Delimited
            TextFP.Delimiters = New String() {Delimiter}
            TextFP.HasFieldsEnclosedInQuotes = True
            TextFP.TrimWhiteSpace = True

            While Not TextFP.EndOfData
                csvRecords.Add(TextFP.ReadFields())
            End While

            Dim i As Integer
            For Each m As String() In csvRecords
                For Each FieldStr As String In m
                    Console.WriteLine(FieldStr)
                    i += 1
                Next
            Next

            TextFP.Close()

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
        CSVDataFieldRead = True

        Call Style_FlexGridCust(FlexGridDataMap)

    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, _
                ByVal e As System.EventArgs) Handles Button1.Click
        Call CSVDataFieldRead("C:test.csv", ",", Encoding.GetEncoding("Shift_JIS"))
    End Sub

関連するエントリー

    None Found

SQL Server, VB.NET, コンピュータ, データベース , , , , , , ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。