tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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))

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。