Sebastien Lorion によって書かれたこのリンクから、適切に作成された CSV パーサー/リーダーを見つけました。
この CSV パーサーで私が気に入っているのは、次のように DataGrid に簡単にバインドできることです。
using (CachedCsvReader csv = new
CachedCsvReader(new StreamReader(txtChosenFile.Text), true))
{
dataGridView1.DataSource = csv;
}
データベースにコミットする前にユーザーにプレビューしてもらいたいので、プロジェクトに必要なものです。
ただし、ファイルのロードには時間がかかるため、プログレス バーを使用して少なくともユーザーにフィードバックを提供する必要があります。残念ながら、CachedCsvReader
csv ファイルの読み取りが進行するにつれて、進行状況バーをリンクまたは更新することが困難になるクラスを取得するのは 1 つのライナーだけです。
それが単純なCsvReader
クラスの場合、次のように進行状況バーを簡単に更新できます。
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
using (CsvReader csv = new
CsvReader(sr, true))
{
double progress = (double) sr.BaseStream.Position / (double) sr.BaseStream.Length;
progressBar1.Value = (int)progress*100;
}
}
ただし、CachedCsvReader
ストリームの位置と長さに関する情報がなくても csv リーダーをアップロードするには、1 つ (または 2 つ) のライナーしか使用していないため、進行状況バーを更新できませんでした。
では、進行状況バーを CachedCsvReader に接続する最良の方法は何でしょうか?