質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

Q&A

解決済

3回答

2237閲覧

CSVの行から,区切りのデータを複数のテキストボックスに入れる方法を知りたいです。

doppi

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

textbox

HTMLの<input type="text">で生成されるtextboxに関するタグです。

0グッド

0クリップ

投稿2020/05/21 06:42

前提・実現したいこと

従業員の番号や名前などを登録するシステムを作っています。
複数のテキストボックスにCSVデータから,区切りされたデータを入れたいのですが、
どのようにすればよいか分かりません。

発生している問題・エラーメッセージ

CSVのデータがテキストボックスで,区切りにならない。

該当のソースコード

C#

1 private void EmployeeForm_Load(object sender, EventArgs e) 2 { 3try 4 { 5 //読み込むCSVファイルを開く 6 StreamReader sr = new StreamReader(@"社員登録情報.csv", 7 8 //CSVからデータを呼び出す際の文字コードをshift jisに指定 9 System.Text.Encoding.GetEncoding("shift_jis")); 10 11 //CSVから1行分の文字を読み取り、文字列として返す 12 String sLine = sr.ReadLine(); 13 String[] sFields = sLine.Split(','); 14 15 16 //テキストボックス1に"社員番号5桁"を表示する 17 textBox1.Text += sLine; 18 //テキストボックス2に"社員番号3桁"を表示する 19 textBox2.Text += sLine; 20 //テキストボックス3に姓を表示する 21 textBox3.Text += sLine; 22 //テキストボックス4に名を表示する 23 textBox4.Text += sLine; 24 25 } 26 27 catch (Exception ex) 28 { 29 //ファイルを読み込めない場合エラーメッセージを表示 30 MessageBox.Show("ファイルを読み込めませんでした " + ex.Message); 31 } 32 33 34 }

試したこと

CSVデータのカンマ識別はsplit(',')で出来るみたいですが、使い方がイマイチ分かりません。
CSVデータ例は下記の通りです。
00000,001,田中,太郎....

下記のように入れたいです。
テキストボックス1 = 00000
テキストボックス2 = 001
テキストボックス3 = 田中
テキストボックス4 = 太郎

ちなみに上記のソースコードでやった場合、
CSVの行データが全て入ってしまいます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

C#

1 //CSVから1行分の文字を読み取り、文字列として返す 2 String sLine = sr.ReadLine(); 3 String[] sFields = sLine.Split(',');

C#

1 //テキストボックス1に"社員番号5桁"を表示する 2 textBox1.Text += sLine;

ここに書かれている通りです。
テキストボックスにsLineを渡したら1行分入ってしまいます。
分割したsFields[]を入れましょう。

投稿2020/05/21 07:00

Wind

総合スコア442

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

textBox1.Text = sFields[0];
textBox2.Text = sFields[1];
textBox3.Text = sFields[2];

ではどうなるでしょう

投稿2020/05/21 06:51

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doppi

2020/05/21 07:03

上手くいきました![ ]の中の要素がCSVデータのカンマ区切りになることに納得行きました。 有難うございます。
guest

0

現在のソースでどの変数にどのような値が格納されているかデバッガで確認してみてください。

投稿2020/05/21 06:50

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問