0

Sebastien Lorion によって書かれたこのリンクから、適切に作成された CSV パーサー/リーダーを見つけました。

この CSV パーサーで私が気に入っているのは、次のように DataGrid に簡単にバインドできることです。

using (CachedCsvReader csv = new
   CachedCsvReader(new StreamReader(txtChosenFile.Text), true))
        {
            dataGridView1.DataSource = csv;
        }

データベースにコミットする前にユーザーにプレビューしてもらいたいので、プロジェクトに必要なものです。

ただし、ファイルのロードには時間がかかるため、プログレス バーを使用して少なくともユーザーにフィードバックを提供する必要があります。残念ながら、CachedCsvReadercsv ファイルの読み取りが進行するにつれて、進行状況バーをリンクまたは更新することが困難になるクラスを取得するのは 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 に接続する最良の方法は何でしょうか?

4

1 に答える 1