Witam,
Proszę o pomoc w rozwiązaniu problemu.
Wczytuję plik excela, z którego pobieram arkusz "Baza" do datagridview poprzez ExcelDataReader AsDataSet
Po wciśnięciu przycisku wykonuje się zdarzenie poniżej:
private void btnImportFile_Click(object sender, EventArgs e)
{
try
{
using (OpenFileDialog ofdImportFile = new OpenFileDialog() { Filter = "Excel file | *.xlsm" })
{
if (ofdImportFile.ShowDialog() == DialogResult.OK)
{
// wersja stream
using (FileStream stream = File.Open(ofdImportFile.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(stream))
{
bgWorker.WorkerReportsProgress = true;
bgWorker.RunWorkerAsync();
dsImport = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true,
FilterRow = (rowReader) =>
{
var progress = rowReader.Depth / rowReader.RowCount;
return true;
bgWorker.ReportProgress(progress);
}
}
});
dt = dsImport.Tables["Baza"];
//wypełnienie datagridview danymi
dgvImportExcel.DataSource = dt;
}
}
}
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
}
private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 100; i++)
{
//Thread.Sleep(100);
bgWorker.ReportProgress(i);
}
}
Problem polega na tym, że progressBar pokazuje postęp dopiero po wypełnieniu datagridview i nie wiem dlaczego a oczekiwanym efektem jest pokazanie stanu wczytywania pliku.
Proszę o wskazanie powodu nieprawidłowości i ewentualne rozwiązanie.