PDA

View Full Version : نمایش و ذخیره جدول های بزرگ



narges_j
چهارشنبه 29 بهمن 1393, 01:01 صبح
سلام دوستان

من نیاز به پردازش فایل های اکسلی دارم که تعداد سطرهای آن بالای 65000 است. در بعضی از قسمتها به دلیل پر شدن حافظه مجبور شدم سطرها را به چند قسمت تقسیم کنم و هر بار روی یک قسمت پردازش انجام بدم. تا اینجا هم سرعت و هم حافظه مشکلی ندارند.
ولی
بعد از پردازش بسته به نوع آیتم های موجود در فایل تعداد ستون ها افزایش پیدا می کنند برای مثال حدود 14000 ستون...مشکل اول نشان دادن کل جدول هست یعنی هر 65000 سطر و هم 14000 ستون...دیتا گرید ویو چون محدودیت تعداد ستون داره باید تولید ستون خودکار غیر فعال کنم و خودم به تعدادی که میخوام ستون را ایجاد کنم.از طرفی باید اطلاعات دیتاتیبل را به صورت ستونی یک جا بخونم و بعد هز کدام را در ستون ایجاد شده درج کنم. تا انجا مشکل سرعت پیدا می کنم و مجبورم ساعتها منتظر بمونم.
مشکل بعدی ذخیره جدول به صورت فایل اکسل هست که باز به تعداد ستون ها ایراد می گیره..

لطفا من را راهنمایی کنید چیکار می تونم بکنم که جدول را با سرعت بیشتری در گرید ویو نمایش بدم و چطور ان را ذخیره کنم؟

ali_md110
چهارشنبه 29 بهمن 1393, 01:29 صبح
سلام
14000ستون در یک جدول بانک اطلاعاتی هست؟ کدوم نوع بانک این تعداد فیلد ساپورت میکنه؟
میتونید از صفحه بندی و Background worker استفاده کنید

mrprestige
چهارشنبه 29 بهمن 1393, 08:56 صبح
سلام و عرض و ادب ، مشکل اول شما اینه که اومدید بجای استفاده از بانک SQL Server از Excel استفاده کردید شما برای پروژه های سنگین که تعداد رکورد های بالایی دارن باید از Sql استفاده کنید چون سرعت بالایی داره و مطلب بعدی اینه شما از دستورات Entity Framework استفاده کنید برای انجام عملیات روی داده هاتون ، این مطالبی رو که عرض کردم انجام بدید به امید خدا مشکلی پیدا نمیکنید .

پیروز و موفق باشید .

SabaSabouhi
چهارشنبه 29 بهمن 1393, 09:25 صبح
سلام
دوست عزیز، چرا از Excel به عنوان بانک استفاده کردی؟ شاید با یه تغییر استراتژی
بتونی به راحتی از یک DBMS استفاده کنی و مشکل سرعت رو تا حد زیادی حل کنی.
اگه صورت مساله رو توضیح بدی، شاید من و سایر دوستان بتونیم کمک کنیم.

صبا صبوحی

narges_j
چهارشنبه 29 بهمن 1393, 10:42 صبح
ساختار نرم افزار با فایل های اکسل کار می کنه. در برنامه هیچ تغییری در فایل های اکسل انجام نمی شه و مجبورم از فایل اکسل استفاده کنم حتی برای کاربر هم راحت تر هست.این فایل ها در اصطلاح دیتاست هستند که از اینترنت دانلود می شوند. من فقط مشکلم تو نمایش پردازش نهایی هست. یعنی نتیجه نهایی می خوام به کاربر نشان بدم.
ببخشید منظور از دستورات entity framwork چیه؟

صورت مساله:
تبدیل فایل اکسل متنی به فایل اکسل باینری مانند
128595

golbafan
چهارشنبه 29 بهمن 1393, 10:54 صبح
سلام
فکر کنم یک کار پردازشی انجام میدید
در هر صورت اگر تعداد ستون های شما زیاده نمیتونید از دیتابیس های معمول استفاده کنید و باید از فایل csv استفاده کنید
نوشتن در آن ساده است و براحتی در اکسل ایمپورت میشه

راه حل دوم
اگر تعداد ستون ها ثابت باشه مثلا 14000 میتونید تعداد اونها رو بکنید 140 تا و در عوض تعداد ردیف هاتون 100 برابر خواهد شد
که با یک حساب و کتاب ساده میتونید با دقت داده ها رو بچینید
اینطوری میتونید از دیتابیس های معمول استفاده کنید

narges_j
چهارشنبه 29 بهمن 1393, 11:02 صبح
نمی تونم ساختار داده ها را تغییر بدم.چون فایل ایجاد شده برای پردازش های بعدی باید به همین صورت باشد و اگر نه پردازش های بعدی اصلا نتیجه صحیحی نمی دهد.
فایل های من xls یا xlsx هستند
تعداد ستون ها بستگی به محتویات فایل داره و اصلا ثابت نیستند

golbafan
چهارشنبه 29 بهمن 1393, 11:09 صبح
پس از csv استفاده کنید
چون ساختارش مثل txt هست بنابراین با سرعت بالا خوانده و نوشته میشه

SabaSabouhi
چهارشنبه 29 بهمن 1393, 11:36 صبح
نمی تونم ساختار داده ها را تغییر بدم.چون فایل ایجاد شده برای پردازش های بعدی باید به همین صورت باشد و اگر نه پردازش های بعدی اصلا نتیجه صحیحی نمی دهد.
فایل های من xls یا xlsx هستند
تعداد ستون ها بستگی به محتویات فایل داره و اصلا ثابت نیستند

سلام
تو دنبال کامپیوتر «نمی‌تونم» و «نمی‌شه» اصلاً وجود نداره.
باید دید که مقرون به صرفه‌ترین راه چیه.
اگر اصرار به استفاده از Excel نباشه، شما می‌تونی اطلاعات رو بریزی تو دیتابیس ( البته نه با اون فرمت اولیه ) و بعد با سرعت بالا
پردازش رو انجام بدی.
در هر صورت سرعت عملیات روی Excel کند خواهد بود، چون برای این کار ( نگهداری اطلاعات با حجم بالا ) طراحی نشده.
ساختاری که شما تو اون شکل نشون دادی به راحتی قابل تبدیل به ساختاری ساده تو دیتابیس هست.

صبا صبوحی

narges_j
چهارشنبه 29 بهمن 1393, 11:48 صبح
اون شکل فقط یک تیکه از کار هست
کاربر فقط با فایل اکسل کار داره و خروجی هم فایل اکسل می خواد.
هر دیتاستی را ممکن کاربر بخواد در نرم افزار استفاده کنه.اینطوری باید اول دیتاست وارد پایگاه کنه بعد روی اون اعملیات انجام بده.از طرفی ساختار فایل را هم نمی شه تغییر داد چون در پردازش های دیگر مهم که چه ایتمی در چه سطری قرار دارد.
من با پردازش مشکلی ندارم چون بیش از 15 ثانیه نیست ولی نمیتونم نتیجه نهایی ذخیره کنم یا در دیتاگرید نشان بدم.

mrprestige
چهارشنبه 29 بهمن 1393, 12:15 عصر
ساختار نرم افزار با فایل های اکسل کار می کنه. در برنامه هیچ تغییری در فایل های اکسل انجام نمی شه و مجبورم از فایل اکسل استفاده کنم حتی برای کاربر هم راحت تر هست.این فایل ها در اصطلاح دیتاست هستند که از اینترنت دانلود می شوند. من فقط مشکلم تو نمایش پردازش نهایی هست. یعنی نتیجه نهایی می خوام به کاربر نشان بدم.
ببخشید منظور از دستورات entity framwork چیه؟

صورت مساله:
تبدیل فایل اکسل متنی به فایل اکسل باینری مانند
128595

بنده با نظر جناب صبوحی موافقم اگه باز از dbms استفاده میکردید حداقلش این بود مدیریت رو اطلاعات جدولتون راحت تر صورت میگرفت ، و نکته بعدی اینکه در واقع ADO و LINQ و Entity Framework سه تا تکنولوژی هستند که شما با استفاده از دستورات اون ها میتونید روی بانکتون عملیات مورد نظرتون رو انجام بدی ، بخاطر این من EF رو به شما پیشنهاد دادم چون این دستورات این روش برای پروژه ای سنگین بهتر جواب میده

hamid_hr
چهارشنبه 29 بهمن 1393, 12:24 عصر
نمایش 65000 رکورد با هم اصلا منطقی نیست
برا ذخیره سازی باید تو فایل اکسل پیج بندی کنی
مثلا هر 100 ستون تو یک پیج بنویسی

narges_j
چهارشنبه 29 بهمن 1393, 17:23 عصر
از همه دوستان خیلی ممنون که در این زمینه کمک کردند...
من قید نمایش دادن تو گرید زدم و فایل را به صورت text ذخیره کردم....