【C#】C#のコンボボックスにCSVの値を登録するには

この記事では、C#のコンボボックスにCSVの値を登録する方法についてご説明します。

【動画】C#のコンボボックスにCSVの値を登録する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


CSVファイルから取得したコンボボックスに登録したい値をAddメソッドの引数に指定して実行すると、その値がコンボボックスに表示されます。

コードの流れ

STEP.1
CSVファイルを開いて値を取得する
CSVファイルを開いて値を取得します
STEP.2
取得した値をAddメソッドの引数に指定して実行する
取得した値をAddメソッドの引数に指定して実行します

CSVファイルとコンボボックスの例

CSVファイル

今回は以下のCSVファイルを用意しました。

フォーム

今回はフォーム上に以下のコンボボックスを設置しました。

CSVファイルの値をコンボボックスに登録した結果は下のとおりです。

コンボボックスに登録されたCSVファイルの値が表示されています。

C#のコード(例)

App.configのコード

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<startup>
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
	</startup>
	<appSettings>
		<!-- CSVファイルのフルパス -->
		<add key="CSVFilePath" value="C:\work\10_勉強\21_C#\0078\data.csv" />
	
	</appSettings>
</configuration>

注目すべきコード

見て頂きたいのは8行目です。

8行目は、CSVファイルのフルパスを「CSVFilePath」というキーに設定しているコードです。

「CSVFilePath」のキーの値をフォーム側のコードが参照して使います。

ちなみに、今回扱うCSVファイルは下の画像のファイルです。(C:\work\10_勉強\21_C#\0078\data.csv)

フォームのコード

using System;
using System.IO;
using System.Windows.Forms;
using System.Configuration;

namespace wfcs_0078
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // App.configのappSettingsタグ内に記述した「CSVFilePath」のキーの値を取得して変数「CSVFilePath」に格納する
            string CSVFilePath = ConfigurationManager.AppSettings["CSVFilePath"];

            // CSVファイルを読み込むStreamReaderのインスタンスを生成する
            using (var reader = new StreamReader(CSVFilePath))
            {                
                // ファイルの終わりまで読み込むWhileループ
                while (!reader.EndOfStream)
                {
                    // 1つ行を取得して変数lineに格納する
                    var line = reader.ReadLine();

                    // 値をコンボボックスに追加する
                    comboBox1.Items.Add(line); 
                }
            }
        }
    }
}

注目すべきコード①

最初に見て頂きたいのは18行目です。

            // App.configのappSettingsタグ内に記述した「CSVFilePath」のキーの値を取得して変数「CSVFilePath」に格納する
            string CSVFilePath = ConfigurationManager.AppSettings["CSVFilePath"];

コードの説明

以上のコードは、App.configのappSettingsタグ内に記述した「CSVFilePath」のキーの値を取得して変数に格納するコードです。

「CSVFilePath」のキーの値は変数「CSVFilePath」に格納します。

注目すべきコード②

次に見て頂きたいのは21行目です。

            // CSVファイルを読み込むStreamReaderのインスタンスを生成する
            using (var reader = new StreamReader(CSVFilePath))

コードの説明

以上のコードは、CSVファイルを読み込むStreamReaderのインスタンスを生成するコードです。

CSVファイルのデータはreaderに格納されます。

注目すべきコード②

次に見て頂きたいのは24行目から31行目です。

                // ファイルの終わりまで読み込むWhileループ
                while (!reader.EndOfStream)
                {
                    // 1つ行を取得して変数lineに格納する
                    var line = reader.ReadLine();

                    // 値をコンボボックスに追加する
                    comboBox1.Items.Add(line); 
                }

コードの説明

以上のコードは、CSVファイルのデータをコンボボックスに登録する処理のコードです。

コードの詳細

24行目のコードは、ファイルの終わりまで読み込むWhile文です。

「!reader.EndOfStream」は、行の最後でない場合を意味します。

27行目のコードでは、readerから1つ行を取得して変数lineに格納します。

30行目のコードでは、変数lineの値をAddメソッドに指定して実行し、コンボボックスに登録します。

動作確認

CSVファイルとフォームの例」をご覧ください。

【注意】参照設定が必要です

一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。

「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。

本コードを実行する際は、「System.Configuration」の項目を追加しましょう。

最後に

この記事では、C#のコンボボックスにCSVの値を登録する方法についてご説明しました。

C#のコンボボックスにCSVの値を登録したいときは本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら