|
分類:[VB.NET/VB2005 以降]
お世話になります。
現在、VB2008にて、作成したcsvファイルを開き、DataGridViewにその内容を書き込むという仕様を作成しています。
そこで、以下のようなソースがあります。
Private Sub CSV_Read() Handles CSVRegister.Click
Dim Items() As String 'CSVの各項目を表す配列
Dim Times() As String '時間編集用の配列
Dim i As Integer = 0
Dim path As String
Dim num As Integer = 0
Dim Reader As New IO.StreamReader(path, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Line As String = Reader.ReadLine 'CSVの一行
Do Until IsNothing(Line)
If num >= 9 Then
Items = Line.Split(",") '一行を, (カンマ)で区切って項目ごとに分解
For n = 0 To Items.Length - 1
If Items(n).Replace("""", "") = Nothing Then
Items(n) = "0"
End If
Next n
'セルに値を設定する。
'開始時間
If Items(0).Replace("""", "") <> "0" Then
Times = Items(0).Replace("""", "").Split(":")
Me.DataGridView1.Rows(i).Cells(2).Value = Times(0) + (Times(1) / 60)
End If
'終了時間
If Items(1).Replace("""", "") <> "0" Then
Times = Items(1).Replace("""", "").Split(":")
Me.DataGridView1.Rows(i).Cells(3).Value = Times(0) + (Times(1) / 60)
End If
'外出時間
If Items(2).Replace("""", "") <> "0" Then
Times = Items(2).Replace("""", "").Split(":")
Me.DataGridView1.Rows(i).Cells(4).Value = Times(0) + (Times(1) / 60)
End If
i = i + 1
End If
num = num + 1
Line = Reader.ReadLine '次の行を読み込む。
Loop
Reader.Close()
End Sub
以上がソースになります。
このソースの
Times = Items(0).Replace("""", "").Split(":")
という、最初の書き込みの段階で、
「インデックスが配列の境界外です。」というエラーが出てしまいます。
DataGridViewの列は5項目あり、
年月日、曜日、出社時間、退社時間、外出時間の順となっています。
csvには出社時間、退社時間、外出時間の値を入力しております。
一応、csvとDataGridViewのCellの位置関係は把握してはいるのですが、
どなたか、このエラーの回避か、解決策をご教授願えないでしょうか・・・
よろしくお願いします。
長々とした文章で申し訳ございません。
|