سلام
سوالم در عنوان مشخص هست
50هزار تا رکورد توی اکسل دارم وقتی میخوام جستجو کنم خیلی طول میکشه و برنامه هنگ میکنه
چکار کنم؟ :متفکر:
Printable View
سلام
سوالم در عنوان مشخص هست
50هزار تا رکورد توی اکسل دارم وقتی میخوام جستجو کنم خیلی طول میکشه و برنامه هنگ میکنه
چکار کنم؟ :متفکر:
اینجا یه نمونه کد داره:
خواندن سریع
ذخیره سریع
من نمیخوام در sql ذخیره کنم
فرض کنید 50هزار رکورد هست که میخوام بر اساس کد ملی اطلاعات اشخصاص رو پیدا کنم و در یکی از فیلدها نوشته ای بنویسم
هم سرچ و هم ایجاد نوشته خیلی طول می کشه!
راهی نیست؟
چرا یه راه داره دوست من!
من یه ویدئو در این زمینه تهیه کردم :
https://barnamenevis.org/showthread.p...A7%D8%B1%D9%BE
این ویدئو رو نگاه کن، کاری که باید انجام بدی رو کامل توضیح دادم، فقط اینکه شما چون نیازی نداری که فایلی رو ذخیره کنی، می تونی این قسمتش رو نگاه نکنی!!! ضمنا اول تمام اطلاعات فایل اکسلت رو بریز تو یه دیتا تیبل، بعد جستجو رو در دیتا تیبل انجام بده که فوق العاده سریعتره !!! همه ی این مسائل رو در ویدئو گفتم.
موفق باشی.
ممنون از آموزش خوب شما
اما چند تا سوال
فایل اکسل من با پسوند .xls هست به جای این خط زیر باید چی بنویسم تا ارتباط برقرار بشه؟
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedType s=Text\"";
حالا اطلاعات رو سرچ کردم و نمایش هم داد تا اینجا درست ؛ تغییر رو اعمال کردم و حالا دوباره میخوام بفرستمش به اکسل
اینجا میشه راهنمائی کنید که سریعترین روش ممکن اطلاعات ذخیره بشه
کدی که استفاده میکنم این است
olecom.CommandText = "UPDATE [Sheet1$] SET shomare=@shomare WHERE codemeli=@codemeli";
_olecom.Parameters.Clear();
_olecom.Parameters.Add("@codemeli", OleDbType.Integer).Value = txtcode.Text;
_olecom.Parameters.Add("@shomare", OleDbType.Integer).Value = Convert.ToInt32(txtshomare.Text);
_olecom.ExecuteNonQuery();
اما خیلی طول میکشه
بازم ممنون
اصل روش باز کردن فایل اکسل بود. سال گذشته یه نمونه برای خواندن فایل اکسل گذاشته بودم که میتونید متغیر strSQL رو تغییر بدین و Query مورد نظر خودتون رو بنویسید. همین الان تست کردم با 54 هزار رکورد اصلا کند نبود. روش دیگه رو هم گفته شده و از لحاظ performance روش OLEDB در مقابل استفاده از کتابخانه Microsoft.Interop.Excel بهینه تره. نمیدونم شما از چه روشی استفاده کرده اید ولی با OLEDB اصلا کند نبودنقل قول:
من نمیخوام در sql ذخیره کنم
فکر کنم جواب سوال اولم این باشه درسته؟
var connectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
خواهش می کنم وظیفه ست، در مورد سوال اول، شما دو راه داری، یا باید کانکشن استرینگت رو تغییر بدی،فکر می کنم به جای عدد 12 باید بنویسی 11 اما مطمئن نیستم تو همین تالار سرچ کنی کدش هست، یه راه دیگه ت هم اینه که ورژن فایل اکسلت رو تبدیل کنی به 2007، به نظرم راه دومی بهتر و منطقی تره، چون آفیس 2007 از آفیس 2003 بهتره !!! خودم از روش دومی استفاده می کنم.
در مورد سوال دومت هم، یه لینک برات می فرستم امیدوارم مشکلت حل بشه.
ممنون از لینکی که فرستادی
آموزشت عالی بود
خیلی چیزها یاد گرفتیم
من تو پروژه خودم این رفرنس رو اضافه میکنم
using Microsoft.Office.Interop.Excel;
از تمام خط های که Application استفاده کرده ایراد میگیره
مثلا یکی از خط ها برای پیدا کردن آدر فایل اکسل در کنار برنامه
مشکل کجاست؟
کمک کنید لطفا :|