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

わんくま同盟

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

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


(過去ログ 103 を表示中)
■61496 / )  Re[5]: CSVデータの一部分のみ読み込む
□投稿者/ 魔界の仮面弁士 (2309回)-(2011/08/16(Tue) 21:07:56)
No61493 (JRY さん) に返信
> wc.DownloadFile( _
>    csvurl, _
>    savedir)
> Dim tfp As New FileIO.TextFieldParser("test.csv", _
>   System.Text.Encoding.UTF8)

tfp に渡しているのは、WebClient でダウンロードしたファイルではなく
固定名 "test.csv" というファイルのようですが、ファイルの取り違いはありませんか?

また、そのファイルの文字コードが、UTF-8 以外になっている可能性はありませんか?


> Dim csvRecords As New System.Collections.ArrayList()
ArrayList 型でも一応蓄えられますが、この場合は List(Of String()) 型の方が良いかも。


>     Dim fields As String() = tfp.ReadFields()
>     csvRecords.Add(fields)
>     Label3.Text = csvRecords(1)(0)
> End While

Label3.Text への表示処理を、ループ内に入れてしまってはまずいかと。


ループ処理の 1 回目で、先頭行のフィールドが 配列fields に渡されますよね。
次の行ではそれを、csvRecords.Add で蓄えています。

しかしループの 1 回目の段階では、蓄えられた csvRecords は 1 件分だけです。
つまり、csvRecords(0) はあっても、csvRecords(1) はまだありません。
そのため、先のエラーになってしまっているというわけです。


2 行目も読み取りたいなら、ループ処理をそのまま続行させ、
1 行目のさらに後のデータも読み取るようにしましょう。

返信 編集キー/


管理者用

- Child Tree -