この記事では、C#のコンボボックスにCSVの値を登録する方法についてご説明します。
【動画】C#のコンボボックスにCSVの値を登録する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
CSVファイルから取得したコンボボックスに登録したい値を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週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。