VB.NET Tips 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
