StreamReaderを使ってのCSVファイルの読み込み (2個) (SNo.030) | |
使用コントロール | Button1 |
その他条件 | WindowsXP(Vista) Visual Basic 2005(VB2008) 使用ファイルは準備しておくか CSV データを読み込みファイルに保存するで作成してから実行してください。 |
★ StreamReaderを使ってのCSVファイルの読み込み
'成績のデータ保存用構造体 Private Structure SeisekiDat Dim name As String '生徒名 Dim kokugo As Single '国語の点数 Dim suugaku As Single '数学の点数 Dim eigo As Single '英語の点数 End Structure Private sd() As SeisekiDat '------------------------------------------------------------------------------- Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'StreamReader.ReadLine メソッド を使ってのCSVファイルの読み込み Dim fileName As String = "../../seiseki.csv" 'ファイルのパス Dim sr As New System.IO.StreamReader(fileName, System.Text.Encoding.Default) Dim n As Integer 'ファイルの最後までループ Do Until sr.Peek() = -1 Dim temp() As String ReDim Preserve sd(n) temp = Split(sr.ReadLine(), ",") '※1 データの項目数と内容が事前に解っているので sd(n).name = temp(0).Trim(Chr(34)) '※2 文字列の前後の "" を除去 sd(n).kokugo = CSng(temp(1)) 'Single 型に変換 sd(n).suugaku = CSng(temp(2)) sd(n).eigo = CSng(temp(3)) '取得結果を確認の為に表示 Console.WriteLine(sd(n).name & vbTab & sd(n).kokugo & vbTab & _ sd(n).suugaku & vbTab & sd(n).eigo) n += 1 Loop sr.Close() 'ファイルを閉じる '出力結果 '浅野 純子 63 69 87 '足立 由美 77 69 85 '加藤 愛子 80 91 92 '斉藤 正樹 79 84 70 End Sub |
|
※1 データの項目数が不定の場合は下記のようにして取得して下さい。 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'StreamReader.ReadLine メソッド を使ってのCSVファイルの読み込み Dim fileName As String = "../../seiseki.csv" 'ファイルのパス Dim sr As New System.IO.StreamReader(fileName, System.Text.Encoding.Default) 'ファイルの最後までループ Do Until sr.Peek() = -1 Dim temp() As String temp = Split(sr.ReadLine(), ",") Dim i As Integer For i = 0 To temp.GetUpperBound(0) If i = temp.GetUpperBound(0) Then Console.WriteLine(temp(i)) Else Console.Write(temp(i) & vbTab) End If Next Loop sr.Close() 'ファイルを閉じる End Sub |
|
※2 どちらの方法も、文字列が " で囲まれているような場合、"浅野 純子" 63 69 87 のように出力されてしまいます。 従ってそのダブルクォートを取り除く作業をしております。(下の方のサンプルは除去しておりません) 尚、Excel で作成したCSV ファイルなら文字列は "" で囲まれていないので必要ありません。 |