نمایش اطلاعات فایل اکسل حجیم در دیناگرید ویو با روش db first entity framework
با سلام
قصد داریم یک فایل اکسل حجیم که دارای بیش از سی هزار سطر هست رو در دیتاگرید ویو نمایش بدم
کد مربوطه رو نوشتم و فقط مشکل اینه که تمامی سطر رو ستونها رو یکباره وارد نمیکنه و سطر به سطر و ستون به ستون بصورت خطی وارد دیتاگرید ویو میکنه که هم باعث هنگ کردن برنامه میشه و هم خیلی زمان بر هست
قصد ما برای این کار این هست که پس از نمایش اطلاعات در صورت صحیح بودن دیتا تمامی این اطلاعات رو به دیتابیس منتقل کنیم که این قسمت هم انجام شده که سرعتش هم بالاست .
حالا آیا راهی هست که بشه این اطلاعات رو بصورت یکباره در دیتا گرید ویو نمایش بدیم ؟
یا اینکه
راهی هست که پس از انتخاب فایل اکسل مستقیم و بدون نمایش اطلاعات در دیتاگرید ویو تمام اطلاعات مستقیم وارد دیتابیس بشه ؟
روش bulk copy رو تست کردم تمام دیتاها بصورت علامت سوال درون دیتابیس نمایش داده میشه .. ( تبدیلها انجام شده ولی نتیجه مثبت نبوده )
ممنون میشم کمک کنید .
نقل قول: نمایش اطلاعات فایل اکسل حجیم در دیناگرید ویو با روش db first entity framework
بایست کدتون را قرار بدید که مشخص بشه چطور اطلاعات را لود میکنید..
نقل قول: نمایش اطلاعات فایل اکسل حجیم در دیناگرید ویو با روش db first entity framework
با سلام
کد مربوط به btn کد زیر هست بطور کامل
private void btn_Select_Excel_Click(object sender, EventArgs e)
{
string fname = "";
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "Excel File Dialog";
fdlg.Filter = "Excel Files |*.xlsx";
fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
fname = fdlg.FileName;
}
else
{
FarsiMessage.Show("no select file .");
btn_Select_Excel.Enabled = true;
return;
}
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Workbook xlWorkbook = xlApp.Workbooks.Open(fname);
_Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
dg_Import.ColumnCount = colCount;
dg_Import.RowCount = rowCount;
for (int i = 1; i <= rowCount; i++)
{
for (int j = 1; j <= colCount; j++)
{
//write the value to the Grid
if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
{
dg_Import.Rows[i - 1].Cells[j - 1].Value = xlRange.Cells[i, j].Value2.ToString();
}
}
//add useful things here!
}
}
نقل قول: نمایش اطلاعات فایل اکسل حجیم در دیناگرید ویو با روش db first entity framework
به جای اینکه مستقیما داده را در دیتاگرید درج کنید، ابتدا یک دیتاتیبل یا یک لیست بسازید و پر کنید و در انتها به دیتاسورس دیتاگرید نسبت بدید. چون تعداد رکوردها زیاد هست قطعا لود اون در دیتاگرید زمانبر هست.
برای درج یا توسط یک حلقه سطرهای دیتاتیبلی که پر کردید را در دیتابیس درج کنید و یا از روش bulk copy استفاده کنید که سرعت بالاتری دارد.
اگر داده ها به درستی در دیتاگرید نمایش داده میشن ولی به صورت علامت سوال درج میشن کد قسمت درج در دیتابیس را قرار بدید.