DataGridView にテキストファイルなどの静的なデータを表示する - C#
DataGridView にテキストファイルなどの静的なデータを表示するコードを紹介します。
概要
DataGridView には通常はデータベースから取得したデータのデータセットを表示することが多いですが、テキストファイルのデータなどの
静的な値を表示したい場合があります。この記事では、DataGridView に性的なデータを表示する手順を紹介します。
手順
データの作成
DataGridView に表示するデータを作成します。今回はカンマ区切りのテキストファイルを作成します。
以下のファイルを作成しました。
ぺんぎんクッキー, 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を愛用