C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: csvファイルをDataGridViewに書き込みたい


(過去ログ 64 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■36739 / inTopicNo.1)  csvファイルをDataGridViewに書き込みたい
  
□投稿者/ hito (17回)-(2009/06/04(Thu) 16:50:05)

分類:[VB.NET/VB2005 以降] 

お世話になります。
すみません、先ほど同じような題名で質問した者ですが、
VB2008にて、指定したcsvファイルをDataGridViewに出力するというプログラムを作成しているのですが、
社員の一ヶ月の勤務データを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 >= 1 Then
                Items = Line.Split(",") '一行を, (カンマ)で区切って項目ごとに分解

                For n = 0 To Items.Length - 1
                    If Items(n).Replace("""", "") = Nothing Then
                        Items(n) = "0"
                    End If
                Next n

                'セルに値を設定する。
                '開始時間
                
                Me.DataGridView1.Rows(i).Cells(2).Value = Times(0) + (Times(1) / 60)
               
		'終了時間
                Me.DataGridView1.Rows(i).Cells(3).Value = Times(0) + (Times(1) / 60)
                
                '外出時間
                Me.DataGridView1.Rows(i).Cells(4).Value = Times(0) + (Times(1) / 60)
              
        i = i + 1
            End If
            num = num + 1
            Line = Reader.ReadLine '次の行を読み込む。
        Loop
        Reader.Close()
    End Sub
以上がソースです。
ここで質問なのですが、一ヶ月分なので、csvのデータは、30日分ほどあります。
そこで、実行すると
15日までは出来るのですが、16日の時点で、
「インデックスが配列の境界外です。」というエラーが出てしまいます。
一応、このエラーについても調べては見たのですが、
理解することが出来ませんでした・・・。
それと分からないのが、なぜ、15日までしか取得できないのでしょうか・・・
Items = Line.Split(",") '一行を, (カンマ)で区切って項目ごとに分解

                For n = 0 To Items.Length - 1
                    If Items(n).Replace("""", "") = Nothing Then
                        Items(n) = "0"
                    End If
                Next n
という部分で、Items(n)の変数に、csvのデータを格納しています。
csvのデータには、30行のデータが存在するのですが、格納できているのは、
その半分だけなんです。
大変失礼なのですが、どなたか、csvのデータをすべて(30行まで)取得する方法を
ご教授願えないのでしょうか。
連続で同じような質問をしてしまい、申し訳ないのですが、よろしくお願いいたします。

引用返信 編集キー/
■36751 / inTopicNo.2)  Re[1]: csvファイルをDataGridViewに書き込みたい
□投稿者/ オショウ (213回)-(2009/06/04(Thu) 19:55:16)
直接的回答ではありません。

CSVなら、OleDbで開いて、DataSetなりに読み込んでDataGridViewにバインドしたら
そのまま表示できます。

また、DB使わずDataGridViewにただのGridとしてデータを表示するなら・・・
表形式(列情報)を設定した後・・・

※ aaa,bbb,ccc,ddd,eeeの配列変数にデータが格納されている前提で

Dim obj(4) As Object

DataGridView1.Rows.Clear()

For i As Integer = 0 To aaa.Length - 1
obj(0) = aaa
obj(1) = bbb
obj(2) = ccc
obj(3) = ddd
obj(4) = eee
DataGridView1.Rows.Add(obj)
Next

とすれば、行(レコード)として表示できます。

以上。参考まで
引用返信 編集キー/
■36771 / inTopicNo.3)  Re[2]: csvファイルをDataGridViewに書き込みたい
□投稿者/ hito (18回)-(2009/06/05(Fri) 09:02:28)
No36751 (オショウ さん) に返信
> 直接的回答ではありません。
>
> CSVなら、OleDbで開いて、DataSetなりに読み込んでDataGridViewにバインドしたら
> そのまま表示できます。

回答ありがとうございます。
そうですね、質問で載せたソースは、他の方が作成していたソースを自分なりにアレンジした
ソースで、具体的に調べたりせずに書いたものなんです。

まずは、DataSetに読み込むという部分について、調べてみようかと思います。
ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -