入れるデータは、郵便局の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 件のコメント:
コメントを投稿