- 題名: 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度開くとか無いなあとも思っています・・・