前提・実現したいこと
VisualStudioでWindowsアプリケーション開発を行っております。
タイトルの通り、C#でCSVファイルからデータを取得し、表示したいのですが、うまくとれていなくて困ってます。
C#初めてまだ3日なので「ここを参照」より「ここをこのように直す」とご教授頂ければ幸いです。
発生している問題・エラーメッセージ
何も表示されません。
該当のソースコード
C#
1class csv : Form 2 { 3 public csv() { Csvio(); } 4 public static int PeopleNum=0; 5 public static string[,] lists = new string[10, 9]; 6 private static void Csvio() 7 { 8 // 読み込みたいCSVファイルのパスを指定して開く 9 StreamReader sr = new StreamReader(@"./Sample.csv"); 10 { 11 // 末尾まで繰り返す 12 while (!sr.EndOfStream) 13 { 14 PeopleNum++; 15 // CSVファイルの一行を読み込む 16 string line = sr.ReadLine(); 17 // カンマ区切りで分割して配列に格納する 18 string[] record = line.Split(','); 19 int j = 0; 20 foreach (string i in record) 21 { 22 lists[PeopleNum-1,j] = i; 23 j++; 24 } 25 26 } 27 28 } 29 30 } 31 } 32} 33 34//出力(別ファイル・同名前空間) 35textBox1.Text = $"{csv.lists[0,0]}";
その他
textBox1、./Sample.csvに関してはあっているはずです。
配列よりリストのがいいとかの話はとりあえず置いておいていただけるとありがたいです。インデックスで参照する事が頻繁にあるのでこのようにしています。
具体的にどういう内容の CSV を読み取らせて、どうなることを期待しているのかを教えてください。
もしかして、
"1,234", あいうえお
のように、数値の項目にカンマが入ってたりしますか?
0001,Aoki,0
0002,Imai,1
のような感じです。そのうち10行9列にする予定ですが、とりあえず今はこれだけです。
lists={{"0001","Aoki","0"},{"0002,"Imai","1"}};
のようにしようとしています
> textBox1.Text = $"{csv.lists[0,0]}";
は、どこで実行しているのでしょうか?
もしかして、Csvio() の実行前とかって事、無いでしょうか?
csvクラスのコンストラクタにCsvio()を入れていて、textBox1の方のクラスのコンストラクタには何も入れていなくて、
先程textBox1のほうのコンストラクタにCsvio()を入れたら動くようになったのですが、どうゆうことなのでしょうか?
textBox1のコードが分からないですが、
Csvio() の呼出し後に、 textBox1.Textの代入が行われたからでは?
デバッグ環境ならば、両方の位置にブレークポイントを置いて実行すれば、はっきりすると思います。
なるほど!ありがとうございます!
回答2件
あなたの回答
tips
プレビュー