玄関へお回り下さい。
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 ファイルなら文字列は "" で囲まれていないので必要ありません。 





2004/05/05
2005/09/14


VBレスキュー(花ちゃん)
VB.NET2003  VB2005