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