DataGridView にテキストファイルなどの静的なデータを表示する - C#

DataGridView にテキストファイルなどの静的なデータを表示するコードを紹介します。

概要

DataGridView には通常はデータベースから取得したデータのデータセットを表示することが多いですが、テキストファイルのデータなどの 静的な値を表示したい場合があります。この記事では、DataGridView に性的なデータを表示する手順を紹介します。

手順

データの作成

DataGridView に表示するデータを作成します。今回はカンマ区切りのテキストファイルを作成します。
以下のファイルを作成しました。
data.txt
ぺんぎんクッキー, 300円
らくだキャラメル, 80円
しろくまアイス, 260円
かるがもサブレ, 160円
あひるタルト, 220円

作成したファイルはプロジェクトに追加します。ファイルのプロパティの[出力ディレクトリにコピー]の値を[常にコピーする]に設定します。

UI

下図のUIを作成します。フォームにボタンと、DataGridViewを配置します。

コード

下記コードを記述します。Button1のクリックイベントを実装します。
using System.Data;

namespace DataGridViewStaticFileDemo
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
      DataTable dt = LoadData("data.txt");
      dataGridView1.DataSource = dt;
    }

    private DataTable LoadData(string filePath)
    {
      DataTable dataTable = new DataTable();
      dataTable.Columns.Add("品名");
      dataTable.Columns.Add("価格");

      using (StreamReader sr = new StreamReader(filePath)) {
        while (sr.EndOfStream == false) {
          string[] rows = sr.ReadLine().Split(',');
          DataRow dr = dataTable.NewRow();
          if (2 <= rows.Length) {
            for (int i = 0; i <= 1; i++) {
              dr[i] = rows[i];
            }
            dataTable.Rows.Add(dr);
          }
        }
      }
      return dataTable;
    }
  }
}

解説

ボタンをクリックすると、DataTableオブジェクトを作成し、作成したDataTableオブジェクトを DataGridView の DataSource プロパティに設定します。DataTableオブジェクトに挿入した値が、DataGirdViewで表示される動作になります。
    private void button1_Click(object sender, EventArgs e)
    {
      DataTable dt = LoadData("data.txt");
      dataGridView1.DataSource = dt;
    }

テキストファイルを読み込んで、DataTable オブジェクトを返すメソッドです。
  private DataTable LoadData(string filePath)
  {
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("品名");
    dataTable.Columns.Add("価格");

    using (StreamReader sr = new StreamReader(filePath)) {
      while (sr.EndOfStream == false) {
        string[] rows = sr.ReadLine().Split(',');
        DataRow dr = dataTable.NewRow();
        if (2 <= rows.Length) {
          for (int i = 0; i <= 1; i++) {
            dr[i] = rows[i];
          }
          dataTable.Rows.Add(dr);
        }
      }
    }
    return dataTable;
  }

はじめにDataTableオブジェクトを作成し、Columnsを設定します。Columnsに設定した値がDataGridViewのヘッダに表示されます。
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add("品名");
    dataTable.Columns.Add("価格");

テキストファイルを読み込むコードです。StreamReaderでテキストファイルを開き、EndOfStream が trueになるまで読み続けます。 1行読むごとに、DataRow オブジェクトを作成して読みだした値をDataRowオブジェクトに挿入し、 DataTableオブジェクトのRows,Add() メソッドを呼び出して、DataTableオブジェクトにDataRowオブジェクトを追加します。
    using (StreamReader sr = new StreamReader(filePath)) {
      while (sr.EndOfStream == false) {
        string[] rows = sr.ReadLine().Split(',');
        DataRow dr = dataTable.NewRow();
        if (2 <= rows.Length) {
          for (int i = 0; i <= 1; i++) {
            dr[i] = rows[i];
          }
          dataTable.Rows.Add(dr);
        }
      }
    }

実行結果

プログラムを実行します。
下図のウィンドウが表示されます。


[button1]をクリックします。テキストファイルが読み込まれ、テキストファイルの内容がDataGridViewに表示されます。


静的なデータをGridDataViewに表示できました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2024-07-28
iPentec all rights reserverd.