hi ,
In My Project I'm Using a Datagridview to load a excel file and show it in Datagridview.
While loading a excel file it takes more time so in between . I need to display a picture box with message "Please Wait" in Gif file format . Using backgroundWorker tool, I Wrote some coding . but it doesn't works . can any one help me with right coding using MultiThread Concept.
here is my code
private void btnLoadData_Click(object sender, EventArgs e)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate
{
Microsoft.Office.Interop.Excel.Application excelApp;
Microsoft.Office.Interop.Excel.Workbook workbook;
Microsoft.Office.Interop.Excel.Worksheet worksheet;
Microsoft.Office.Interop.Excel.Range range;
excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
workbook = excelApp.Workbooks.Open(txtPath.Text, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets.get_Item(1);
range = excelApp.get_Range("A1", Type.Missing);
if (range != null)
{
var val = range.Value2;
var sourceString= val.ToString().Trim();
var remove="Period";
var a = sourceString.IndexOf(remove);
var b = string.Concat(sourceString.Substring(0, a), sourceString.Substring(a + remove.Length));
var c = b.ToString().TrimStart();
var remove1 = ":";
var d = c.IndexOf(remove1);
var f = string.Concat(c.Substring(0, d), c.Substring(d + remove1.Length));
var g = f.ToString().TrimStart();
var remove2 = "to";
var h = g.IndexOf(remove2);
var i = string.Concat(g.Substring(0, h), g.Substring(h + remove2.Length));
var j = i.ToString().TrimStart();
string sub = j.Substring(0,10);
string sub1 = j.Substring(12,10);
textEdit1.Text += Convert.ToString(sub).Trim();
textEdit3.Text += Convert.ToString(sub1).Trim();
}
range = excelApp.get_Range("A2", Type.Missing);
if (range != null)
{
var val1 = range.Value2;
var sourceString= val1.ToString().Trim();
var remove="Supplier";
var a = sourceString.IndexOf(remove);
var b = string.Concat(sourceString.Substring(0, a), sourceString.Substring(a + remove.Length));
var c = b.ToString().TrimStart();
var remove1=":";
var d = c.IndexOf(remove1);
var f = string.Concat(c.Substring(0, d), c.Substring(d + remove1.Length));
var g = f.ToString().TrimStart();
textEdit2.Text += Convert.ToString(g).Trim();
}
range = worksheet.UsedRange;
int column = 0;
int row = 0;
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Product");
dt.Columns.Add("Item/Model Code");
dt.Columns.Add("Item/Model");
dt.Columns.Add("Qty.");
dt.Columns.Add("Sales Value");
dt.Columns.Add("Discount Amt.");
dt.Columns.Add("Amount");
dt.Columns.Add("Net Amount");
dt.Columns.Add("SR Qty");
dt.Columns.Add("SR Value");
dt.Columns.Add("SR Discount Amt.");
dt.Columns.Add("SR Tax Amt.");
dt.Columns.Add("SR Net Amt.");
dt.Columns.Add("Total Qty");
dt.Columns.Add("Total Value");
dt.Columns.Add("Total Discount");
dt.Columns.Add("Total Tax");
dt.Columns.Add("Total Net Value");
for (row = 5; row <= range.Rows.Count; row++)
{
DataRow dr = dt.NewRow();
for (column = 1; column <= range.Columns.Count; column++)
{
dr[column - 1] = (range.Cells[row, column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString();
}
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
};
worker.RunWorkerCompleted += delegate
{
pictureEdit1.Visible = false;
worker.Dispose();
btnLoadData.Enabled = true;
};
worker.RunWorkerAsync();
}