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

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

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

Re[4]: CSVファイルの読み込み


(過去ログ 57 を表示中)

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

■32182 / inTopicNo.1)  CSVファイルの読み込み
  
□投稿者/ モノ (3回)-(2009/02/02(Mon) 23:09:01)

分類:[C#] 

こんにちは初心者のモノです。

C#でCSVファイルをデータグリッドビューに読み込もうと書籍などで調べ、以下のソースを書きました。

しかし、エラーがでてしまい落ちてしまいます。文章的に間違っているのでしょうか?

よろしければ教えてください。

    private void button1_Click(object sender, EventArgs e)
{
string line;
System.IO.StreamReader reader = new System.IO.StreamReader
(@"C:\WindowsApplication3\aaa.csv", Encoding.Default);
dataGridView1.Rows.Clear();
while (!reader.EndOfStream)
{
line = reader.ReadLine();
dataGridView1.Rows.Add(line.Split(','));
}
reader.Close();
}
引用返信 編集キー/
■32185 / inTopicNo.2)  Re[1]: CSVファイルの読み込み
□投稿者/ nori (45回)-(2009/02/03(Tue) 00:54:18)
>しかし、エラーがでてしまい落ちてしまいます。文章的に間違っているのでしょうか?
どんなエラーですか?
C:\WindowsApplication3\aaa.csvファイルが無いとか?

自前で解析するのも良いですが、一応TextFieldParserを紹介しておきます。
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html
引用返信 編集キー/
■32189 / inTopicNo.3)  Re[1]: CSVファイルの読み込み
□投稿者/ .SHO (639回)-(2009/02/03(Tue) 09:16:46)
No32182 (モノ さん) に返信

String.Splitの引数って char の配列じゃない?
引用返信 編集キー/
■32190 / inTopicNo.4)  Re[2]: CSVファイルの読み込み
□投稿者/ επιστημη (1644回)-(2009/02/03(Tue) 09:30:18)
επιστημη さんの Web サイト
> String.Splitの引数って char の配列じゃない?

んじゃ「しかし、エラーがでてしまい落ちてしまいます。」
ってコンパイル・エラーのことか。で、何が落ちたんだろ。
コンパイル・エラーでコンパイラが落ちたらシャレならんのだが。

引用返信 編集キー/
■32191 / inTopicNo.5)  Re[3]: CSVファイルの読み込み
□投稿者/ やじゅ (925回)-(2009/02/03(Tue) 09:42:46)
やじゅ さんの Web サイト
文法的には問題なさそうです、コンパイルエラーでもないようですし。

>エラーがでてしまい落ちてしまいます
そのエラーの内容を書いてもらわないことには解決できなそうですね。

引用返信 編集キー/
■32193 / inTopicNo.6)  Re[4]: CSVファイルの読み込み
□投稿者/ .SHO (640回)-(2009/02/03(Tue) 09:56:57)
> String.Splitの引数って char の配列じゃない?

> 文法的には問題なさそうです、コンパイルエラーでもないようですし。

すいません。
失礼しました。
引用返信 編集キー/
■32194 / inTopicNo.7)  Re[4]: CSVファイルの読み込み
□投稿者/ επιστημη (1645回)-(2009/02/03(Tue) 09:58:57)
επιστημη さんの Web サイト
2009/02/03(Tue) 10:20:22 編集(投稿者)

> 文法的には問題なさそうです、コンパイルエラーでもないようですし。

あー、Split(char[]) じゃなくて Split(params char[]) ですねぃ。
# ドキュメント(MSDN)の不備だよなぁ

で、追試しました。まんま同じコードで試したけども...落ちませんょ?
食わせたcsvに問題があるのか、そもそもStreamReaderのコンストラクトにしくったか...

引用返信 編集キー/
■32217 / inTopicNo.8)  Re[5]: CSVファイルの読み込み
□投稿者/ biac (36回)-(2009/02/03(Tue) 15:53:51)
biac さんの Web サイト
No32194 (επιστημη さん) に返信
> で、追試しました。まんま同じコードで試したけども...落ちませんょ?
> 食わせたcsvに問題があるのか、そもそもStreamReaderのコンストラクトにしくったか...

はたまた、データグリッドのカラム定義のどれかがチェックボックスになってるとかw


> モノさん

幾つかのことをいっぺんにやろうとして、わけが分からなくなってませんか?

ボタンクリック時にやりたいことは、
・CSV ファイルからデータを読み込む
・データを ',' で区切って分解する
・データをグリッドに表示する
の、3つのことじゃないですか?

using System.Collections.Generic;

// …

private void button1_Click(object sender, EventArgs e)
{
// CSV ファイルからデータを読み込む
//List<string> csvLines = this.ReadCsvFile();

//データを ',' で区切って分解する
//List<strng[]> csvData = this.SplitCsvData(csvLines);
// ※ データの持ち方が、配列の Generic List で良いか (複雑すぎないか) という宿題は残りますが、 とりあえず。

//データをグリッドに表示する
//this.SetDataToGrid(csvData);
}

こんなふうに、 やりたいことを整理して書いてみます。
それからメソッドの中身を、 ひとつづつ作っていきます。

最初の ReadCsvFile() メソッドは… CSV ファイルを開いて、 1行ずつ string に読み出しては、 新しく用意した List<> に追加していくだけ。 これだったらすぐに書けそうでしょう? ちゃんと動いたかどうかも、 戻り値を受け取った csvLines の中身を見れば、 すぐに分かりますよね?

いっぺんに何でもかんでもやってしまおうとせず、 先に、 やるべきことがシンプルになるまで分解してやることがコツです。

なお、 上のように作っていくと、 それぞれのメソッドの中で繰り返しループが出来ちゃいます。 ループを合体させたほうが処理スピードは上がるはずですが… それは、きちんと動くようになってから考えましょう。 ループ 3つのままでも十分な処理速度が出るなら、 わざわざメソッドを合体させてややこしくする必要は無いですから。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -