カテゴリー
Software Tech

[C#備忘録]DataGridViewをXMLファイルへ反映 | AmpiTa Project

 XMLファイルを DataGridView に表示する方法はネット上にも溢れていますが、表示中の DataGridView をXMLファイルに反映させる方法が見当たらなかったので、次回のために備忘録を作成しています。




Excel → XML

 エクセル(Excel)からデータを取り込んでDataGridViewやXMLファイルに変換する方法は過去の記事でも載せているとおり『ExcelDataReader』(エクセルデータリーダー)を使います。




XML → DataGridView

 XMLファイルはデータを保管し、素早く処理する方法として優れています。

 データテーブル(DataTable)をつくり、XMLファイル・Schemaファイルと紐づけることで、より扱いやすくなります。

DataSet ds_Sample = new DataSet();
System.Data.DataTable dt_ExTable = new System.Data.DataTable();
dt_ExTable.TableName = "tn_Temporary";
ds_Sample.Tables.Add(dt_ExTable);
dt_ExTable.ReadXmlSchema(XSD_File_Name);
dt_ExTable.ReadXml(XML_File_Name);
dataGridView1.DataSource = dt_ExTable;

 上記コードではデータセット・データテーブルにXMLファイルを紐づけ(Read)したのち、そのデータテーブルとデータグリッドビュー(DataGridView)を紐づけています。

 この方法で紐づけることで、100万レコードあるXMLファイルでも、30秒もかからずにDataGridViewに表示できます。




DataGridView → XML

 本題のデータグリッドビュー(DataGridView)からXMLファイルへの変換ですが、『System.Data.DataTable』を使って書き込みます。

DataSet ds_Sample = new DataSet();
System.Data.DataTable dt_ExTable = new System.Data.DataTable();
dt_ExTable.TableName = "tn_Temporary";
ds_Sample.Tables.Add(dt_ExTable);
dt_ExTable = (System.Data.DataTable)dataGridView1.DataSource;
dt_ExTable.WriteXml(XML_File_Name);

 一旦はC#プログラム上でデータテーブルにデータグリッドビューのデータを移したあとで、そのデータテーブルをXMLファイルに書き込んで完了です。




処理するタイミング

 DataGridView の Edit Mode は EditOnKeystrokeOrF2 にしています。モードは何でも良いのですが、DataGridView が編集可能である必要があります。

 これを記録するタイミングは、編集の都度記録することもできますが、レコード数が多いと処理が進まなくなるので、ユーザーがタイミングを決定できた方が良いと思います。

 データ量が少ない場合や、記録を忘れると困るような場合はフォーカスしているセルが変更されたときなどに記録するようにします。

 筆者はボタンを押したときに処理されるようにしています。




おわりに

 今回は、難題であったデータグリッドビューのデータをXMLファイルに書き込む処理をしました。

 過去のプログラムを見ると3年以上前には実装してあったのですが、滅多に使わないので忘れてしまいます。ここに備忘録として残すことにしました。




関連記事