タイトル | : CSVファイルから配列を取得するコード |
記事No | : 11079 |
投稿日 | : 2013/05/23(Thu) 17:56 |
投稿者 | : るいがとひなきす |
windows7 OS上で実行しているvb2005において以下の様な CSVファイルから配列を取得するコードを書いてみました。 その際にインターネットで調べた例文を参照しました。 これは動きます。しかし同じようなステートメントが出てきたり してスッキリ来ないので 不要な部分や統合できる箇所を 教えていただけると幸いです。 例えば 「TextFieldParser」というメソッドを含んだ ステートメントが2回出てくるのが、気になります。 あち配列に取得した文字列を収める際にも 「Redim preserve」なんていういかにもVB6時代の 遺物みたいなステートメント使ってますが これもスッキリ書き換える方法をご教示いただけますと 幸いです
**********
Dim csvRecords As New System.Collections.ArrayList()
'CSVファイル名 Dim csvFileName As String = "c:\testfile.txt" Dim xcol(0) As String Dim ycol(0) As String
'utf-8で読み込む Dim tfp As New FileIO.TextFieldParser(csvFileName, _ System.Text.Encoding.GetEncoding("utf-8")) 'フィールドが文字で区切られているとする 'デフォルトでDelimitedなので、必要なし tfp.TextFieldType = FileIO.FieldType.Delimited '区切り文字を,とする tfp.Delimiters = New String() {vbTab} 'フィールドを"で囲み、改行文字、区切り文字を含めることができるか 'デフォルトでtrueなので、必要なし tfp.HasFieldsEnclosedInQuotes = True 'フィールドの前後からスペースを削除する 'デフォルトでtrueなので、必要なし tfp.TrimWhiteSpace = True
While Not tfp.EndOfData 'フィールドを読み込む Dim fields As String() = tfp.ReadFields() '保存 csvRecords.Add(fields) End While
'後始末 tfp.Close()
Using textParser As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\testfile.txt", System.Text.Encoding.GetEncoding("UTF-8"))
'CSVファイル textParser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
'区切り文字 textParser.SetDelimiters(vbTab)
'ファイルの終端までループ While Not textParser.EndOfData '1行読み込み Dim row As String() = textParser.ReadFields()
xcol(UBound(xcol)) = row(0) ycol(UBound(ycol)) = row(1)
Console.WriteLine() ReDim Preserve xcol(UBound(xcol) + 1) ReDim Preserve ycol(UBound(ycol) + 1) End While End Using MsgBox(xcol(0) & ", " & xcol(1) & ", " & xcol(2)) MsgBox(ycol(0) & ", " & ycol(1) & ", " & ycol(2))
|