- 題名: CSVを二次元配列に読み込ませる時の変数の宣言について
- 日時: 2012/01/10 20:11:35
- ID: 29577
- この記事の返信元:
- (なし)
- この記事への返信:
- [29579] Re[1]: CSVを二次元配列に読み込ませる時の変数の宣言について2012/01/10 22:13:44
- ツリーを表示
2012/01/10(Tue) 22:40:13 編集(投稿者) 2012/01/10(Tue) 22:38:30 編集(投稿者) 2012/01/10(Tue) 22:37:05 編集(投稿者) 色々方法がありますが、下記ではどうでしょうか? Dim SDat(,) As String = Nothing Using sr As New System.IO.StreamReader("c:\test.csv", System.Text.Encoding.Default) Dim i, j As Integer Do Until sr.Peek() = -1 Dim temp() As String temp = Split(sr.ReadLine(), ",") ReDim Preserve SDat(temp.GetUpperBound(0), i) For j = 0 To temp.GetUpperBound(0) SDat(j, i) = temp(j) Next i += 1 Loop End Using For i = 0 To SDat.GetUpperBound(1) For j = 0 To SDat.GetUpperBound(0) Console.Write(SDat(j, i).ToString & " ") Next Console.WriteLine() Next
分類:[.NET]
CSVファイルを二次元配列に読み込ませるために以下のようなソースを書いた(いろんな掲示板からコピペしてきた)のですが、
**********************************************
Dim txtParser As Microsoft.VisualBasic.FileIO.TextFieldParser = _
New Microsoft.VisualBasic.FileIO.TextFieldParser( _
"c:\test.csv", _
System.Text.Encoding.GetEncoding("shift_jis"))
txtParser.TextFieldType = _
Microsoft.VisualBasic.FileIO.FieldType.Delimited
txtParser.SetDelimiters(",")
Dim SDat(20, 10) As String
Dim i As Integer = 0
Dim j As Integer = 0
While Not txtParser.EndOfData
Dim splittedResult As String() = txtParser.ReadFields()
For Each output As String In splittedResult
Console.WriteLine(Str(j) & ":" & Str(i) & ":" & output)
SDat(j, i) = output
i = i + 1
Next
i = 0
j = j + 1
End While
txtParser.Close()
**********************************************
SDAT(,)を宣言するときにtest.csvの行・桁数の最大数を取得するスマートな方法はあるでしょうか?
同じようなソースを2度書いて一度目でi,jの最大数を取って二度目にその数でSDATを宣言すればいいのは分かるのですが、同じCSVファイルを2度開くとか無いなあとも思っています・・・