ホーム > 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形式の解析などがお手軽に行えるようになりました。

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

[code=”vb”]

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

[/code]

関連するエントリー

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

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