タイトル : CSVファイルから配列を取得するコード 投稿日 : 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)) |