入れるデータは、郵便局のCSVデータでも入れてみますか。
http://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html
北海道あたりのデータでも使ってみましょう。
では、先頭の9列でもデータを取り込んでみましょう。
まずは、取り込む先を確保します。
DataGridViewを配置し、9列作成します。
名称も変更せず適当に・・・。
CSVは、DEBUGフォルダ配下にでもおいておきますか。
using System; using System.IO; using System.Text; using System.Windows.Forms; namespace DataGridView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.DataLoad(); } private void DataLoad() { foreach (string line in File.ReadLines("01HOKKAI.CSV", Encoding.Default)) { string[] csv = line.Split(','); string[] data = new string[9]; Array.Copy(csv, 0, data, 0, 9); this.dataGridView1.Rows.Add(data); } } } }
csvをスプリットして先頭の9データを1行ずつDataGridViewに追加しています。
一方で、効率の面から、Rowデータをまとめていれるというやり方もります
using System; using System.IO; using System.Text; using System.Windows.Forms; namespace DataGridView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.DataLoad(); } private void DataLoad() { string[] csvDataAll = File.ReadAllLines("01HOKKAI.CSV", Encoding.Default); //データの分配列を用意 DataGridViewRow[] rows = new DataGridViewRow[csvDataAll.Length]; for(int i = 0; i < csvDataAll.Length; i++) { string[] csv = csvDataAll[i].Split(','); string[] data = new string[9]; Array.Copy(csv, 0, data, 0, 9); DataGridViewRow row = new DataGridViewRow(); row.CreateCells(this.dataGridView1); row.SetValues(data); rows[i] = row; } this.dataGridView1.Rows.AddRange(rows); } } }DataGridViewに直接何度も放り込むと時間がかかるので、 Rowデータを配列に保持して1度に放り込むと速いという話ですね。 参考までに速度を比較しておきます。 8245レコード9列分のデータを追加する場合だと 1レコードずつDataGridViewへ追加
2.4792633 2.5976070 2.4511964 2.9920726 2.8634533 2.3278521 2.7264484 2.5300329 2.3477178 2.4274311Ave. 2.57秒 1度にDataGridViewへ追加
0.9712624 1.1560973 1.1795451 1.0009344 1.1347776 1.0131825 1.0595981 1.0133348 1.0227687 1.1925171Ave. 1.07秒
0 件のコメント:
コメントを投稿