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

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

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

Re[8]: csvの内容をDataGridViewに移したいのですが


(過去ログ 63 を表示中)

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

■36717 / inTopicNo.1)  csvの内容をDataGridViewに移したいのですが
  
□投稿者/ hito (12回)-(2009/06/04(Thu) 13:22:18)

分類:[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の位置関係は把握してはいるのですが、
どなたか、このエラーの回避か、解決策をご教授願えないでしょうか・・・
よろしくお願いします。
長々とした文章で申し訳ございません。

引用返信 編集キー/
■36719 / inTopicNo.2)  Re[1]: csvの内容をDataGridViewに移したいのですが
□投稿者/ すがり (32回)-(2009/06/04(Thu) 13:28:24)
No36717 (hito さん) に返信
>このソースの
>Times = Items(0).Replace("""", "").Split(":")
>「インデックスが配列の境界外です。」というエラーが出てしまいます。

このときのItems(0)の内容をダンプして中身をチェックしてみてもわからないのでしょうか?

引用返信 編集キー/
■36721 / inTopicNo.3)  Re[2]: csvの内容をDataGridViewに移したいのですが
□投稿者/ hito (13回)-(2009/06/04(Thu) 13:46:11)
No36719 (すがり さん) に返信
> >このソースの
> >Times = Items(0).Replace("""", "").Split(":")
> >「インデックスが配列の境界外です。」というエラーが出てしまいます。
>
> このときのItems(0)の内容をダンプして中身をチェックしてみてもわからないのでしょうか?

回答ありがとうございます。
デック処理を行い、csvの値を調べましたが、値自体は正しく取得できています。
なのですが、
「インデックスが配列の境界外です。」というエラーがどうしても出てしまいます。

VBのソース側での位置の指定が間違っているのか、
それともcsvファイル内の書き方が間違っているのか、その判断すらつかない状態です。
すみません、分からないことだらけで、上記で記しましたソースも、
先輩が記述したものをマネして書いたもので、はっきりと理解して書いたわけではないんです。
引用返信 編集キー/
■36722 / inTopicNo.4)  Re[3]: csvの内容をDataGridViewに移したいのですが
□投稿者/ .SHO (853回)-(2009/06/04(Thu) 13:53:44)
No36721 (hito さん) に返信

>>このときのItems(0)の内容をダンプして中身をチェックしてみてもわからないのでしょうか?
>
> デック処理を行い、csvの値を調べましたが、値自体は正しく取得できています。

デック処理というのが何なのか知らないですが、csvの値じゃなくて
Items(0)の内容を調べるように言われてると思うのですが。

引用返信 編集キー/
■36724 / inTopicNo.5)  Re[4]: csvの内容をDataGridViewに移したいのですが
□投稿者/ hito (14回)-(2009/06/04(Thu) 14:04:11)
No36722 (.SHO さん) に返信
> ■No36721 (hito さん) に返信
>
> >>このときのItems(0)の内容をダンプして中身をチェックしてみてもわからないのでしょうか?
>>
>>デック処理を行い、csvの値を調べましたが、値自体は正しく取得できています。
>
> デック処理というのが何なのか知らないですが、csvの値じゃなくて
> Items(0)の内容を調べるように言われてると思うのですが。
>
すみません、Items(0)という変数に、csvの値を格納し、
そのItems(0)の値をDataGridViewの指定したCellに書き込むという形でソースを書いてるのですが、
テスト動作の中で、Items(0)の内容、つまり値には、csvの値が正しく格納されており、
その部分に関しましては、意図した動作をしているという意味で書きました。

分かりづらい説明しかできず、申し訳ございません。

引用返信 編集キー/
■36725 / inTopicNo.6)  Re[5]: csvの内容をDataGridViewに移したいのですが
□投稿者/ HiJun (132回)-(2009/06/04(Thu) 14:15:00)
Times = Items(1).Replace("""", "").Split(":")
のエラーが発生するときのItems(1)の中身は、hitoさんが想定して
いる値になっていますか?

引用返信 編集キー/
■36727 / inTopicNo.7)  Re[6]: csvの内容をDataGridViewに移したいのですが
□投稿者/ hito (15回)-(2009/06/04(Thu) 14:29:30)
No36725 (HiJun さん) に返信
> Times = Items(1).Replace("""", "").Split(":")
> のエラーが発生するときのItems(1)の中身は、hitoさんが想定して
> いる値になっていますか?
>
はい、想定していた値となっております。
Replace関数の使い方なのでしょうか・・・。
引用返信 編集キー/
■36729 / inTopicNo.8)  Re[7]: csvの内容をDataGridViewに移したいのですが
□投稿者/ HiJun (133回)-(2009/06/04(Thu) 14:43:20)
No36727 (hito さん) に返信
> はい、想定していた値となっております。
> Replace関数の使い方なのでしょうか・・・。
の可能性がありますね。

サンプルプログラムを作ってみて、
想定した値で、Replese出来るかどうか
確認したほうが良いと思います。
引用返信 編集キー/
■36735 / inTopicNo.9)  Re[8]: csvの内容をDataGridViewに移したいのですが
□投稿者/ hito (16回)-(2009/06/04(Thu) 15:42:23)
No36729 (HiJun さん) に返信
> ■No36727 (hito さん) に返信

皆さん、回答ありがとうございます。
一応、いろいろなサイトを巡り、
調べたのですが、Replace関数について正しい扱いが出来ませんでした。
なので、その関数を使用せずにcsvの取り込み処理を行うことと決めました。

お騒がせして、すみませんでした。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -