PDA

View Full Version : نوعی استخراج از فایل اکسل



ghazal_mohammady
سه شنبه 18 فروردین 1394, 15:46 عصر
عرض سلام و ادب
نوعی استخراج از یک فایل اکسل رو نیاز دارم
فایل ضمیمه شده در این فایل سطر اول نام یه سری دستورات هست و سطرهای بعدی فراوانی ها ی این دستورات
بجز سطر اول، هر سطر نشانه یک فایل هست
من میخوام با متدی کاری کنم که مین و ماکس های هر ستون رو در بیارم به نوعی که به این فرمت باشه:
اسم دستور=مین
اسم دستور=مکس
Add=0 Add=0/1434334
int=0/00001 int=0/67

میشه راهنماییم کنید؟
http://s4.picofile.com/file/8181180900/1.csv.html

am_al_59
سه شنبه 18 فروردین 1394, 17:46 عصر
دو تا راه داری

اول:
اکسل در حالت عادی این کارو نمیکنه و باید توی اکسل فرمول نویسی کنی چون اعدادت در یک cell و با ; از هم جدا شدن. حالا این فرمول نویسی چند تا مشکل داره که اگر خواستی از این روش بری بگو با لینک و توضیحات تکمیل بگم چرا بهتره از راه دوم بری

دوم:
توی C# اطلاعاتو بخون و هرکار خواستی باهاش بکن

ghazal_mohammady
سه شنبه 18 فروردین 1394, 18:03 عصر
من کلا میخوام تو سی شارپ کار کنم
اینو میخوام بدونم چه طوری، ضمنا بعد خوندن اطلاعات باز میخوام باهاشون یه سری محاسبات انجام بدم

ghazal_mohammady
سه شنبه 18 فروردین 1394, 19:50 عصر
خب اگه نا مفهومه توضیحاتم بگین بیشتر توضیح بدم :افسرده:

ghazal_mohammady
چهارشنبه 19 فروردین 1394, 00:24 صبح
دو تا راه داری

اول:
اکسل در حالت عادی این کارو نمیکنه و باید توی اکسل فرمول نویسی کنی چون اعدادت در یک cell و با ; از هم جدا شدن. حالا این فرمول نویسی چند تا مشکل داره که اگر خواستی از این روش بری بگو با لینک و توضیحات تکمیل بگم چرا بهتره از راه دوم بری

دوم:
توی C#‎ اطلاعاتو بخون و هرکار خواستی باهاش بکن

مهم اینه که چطور کاری که میخوام بکنمو برنامه نویسی کنم :افسرده:

am_al_59
چهارشنبه 19 فروردین 1394, 00:34 صبح
این واسه اینه که یک فایل excel رو باز کنی و بخونی برای نمونه سطر یک سطون 1 رو خوندم

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Workbooks.Open("d:\\11.xlsx");
string test = excelApp.ActiveSheet.Cells[1, 1].Value.ToString();



اگر هم بخوای بری تو روش دوم که گفتم باید فرمول بنویسی مثلاً برای تبدیل اعداد جدا شده در یک سلول با ; به عبارت محاسباتی اینطوری میشه
SUBSTITUTE(A1,";","+")





در ضمن برای روش دوم اینو بگم که خود اکسل تابعی که شما بتونی راحت ازش استفاده کنی نداره (به دلیل شکل خاصی که اعداد شما در فایل داره) باید یک تابع هم بنویسی که با بیسیک هست و بصورت ماژول توی excel استفاده کنی (آخرین بیسیکی که من نوشتم با GW Basic و Q Basic بوده) این نمونه


Public Function myFunction(ByVal ex As String) As String
Dim app As Object
Dim sheet As Object
Dim result As Variant
Set app = CreateObject("Excel.Application")
Set sheet = app.ActiveSheet
sheet.Cells(1, 1) = "=" & ex
result = sheet.Cells(1, 1)
myFunction = result
End Function



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

برای استفاده از روش اول باید به اسمبلی Microsoft Excel Object Library هم در پروژت Reference بدی یک شماره هم داره که مربوط به ورژن آفیس نصب شده روی سیستمت هست مثلاً مال من هست Microsoft Excel 15.0 Object Library

محمد آشتیانی
چهارشنبه 19 فروردین 1394, 02:31 صبح
سلام
اول این که فایل نمونه شما ، CSV هست و نه اکسل (نرم افزار اکسل فایل CSV رو هم باز میکنه)

برای صرفه جویی در وقت ، باینری LumenWorks.Framework.IO رو از این آدرس (http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader) برای تبدیل فایل CSV به دیتاتیبل گرفتم و بعنوان Reference در پروژه اضافه کردم و به ترتیبی که در نمونه برنامه زیر می بینید ازش استفاده کردم.


مهم اینه که چطور کاری که میخوام بکنمو برنامه نویسی کنم
مهم اینه که خودتون تلاش کنید و منتظر نمونید کسی مسئله رو تمام و کمال براتون حل کنه.



موفق باشید.

ghazal_mohammady
چهارشنبه 19 فروردین 1394, 09:45 صبح
خیلی سپاس گزارم اساتید گرامی


مهم اینه که خودتون تلاش کنید و منتظر نمونید کسی مسئله رو تمام و کمال براتون حل کنه.

خب من چیکار کنم اول کارم همه ی کارای سخت گیرم میاد من تجربه ندارم خب:افسرده:

ghazal_mohammady
چهارشنبه 19 فروردین 1394, 10:39 صبح
یه سوال دیگه
آیا میشه اطلاعات دیتاگریدویو رو به عنوان فایل csv ذخیره کرد؟

am_al_59
چهارشنبه 19 فروردین 1394, 10:45 صبح
بله همه کار میشه کرد
فایل های csv همون فایل های Text هستند
با این تفاوت که ساختار مشخصی دارند
http://www.codeproject.com/Articles/415732/Reading-and-Writing-CSV-Files-in-Csharp
http://stackoverflow.com/questions/18757097/writing-data-into-csv-file

am_al_59
چهارشنبه 19 فروردین 1394, 12:43 عصر
در فایل های csv ستون ها با ویرگول و سطرها با \n (کاراکتر خط جدید) جدا میشن این نمونه ساده


StreamWriter sw = new StreamWriter("d:\\aa.csv");
sw.WriteLine("amir,0915110");
sw.WriteLine("vahid,0915515");
sw.WriteLine("anush,0915318");
sw.Close();

ghazal_mohammady
جمعه 21 فروردین 1394, 19:05 عصر
سلام
اول این که فایل نمونه شما ، CSV هست و نه اکسل (نرم افزار اکسل فایل CSV رو هم باز میکنه)

برای صرفه جویی در وقت ، باینری LumenWorks.Framework.IO رو از این آدرس (http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader) برای تبدیل فایل CSV به دیتاتیبل گرفتم و بعنوان Reference در پروژه اضافه کردم و به ترتیبی که در نمونه برنامه زیر می بینید ازش استفاده کردم.


مهم اینه که خودتون تلاش کنید و منتظر نمونید کسی مسئله رو تمام و کمال براتون حل کنه.



موفق باشید.

عرض سلام و ادب
یه سوال دیگه
الان که مین و ماکس ها ذر اومده میشه یه فیلتری روش اعمال کرد که دستورهایی که حدود مین و ماکس آنها اشتراک نداره یا اشتراک کمتری داره تو دیتاگرید بمونه؟

ghazal_mohammady
شنبه 22 فروردین 1394, 14:43 عصر
عرض سلام و ادب
یه سوال دیگه
الان که مین و ماکس ها ذر اومده میشه یه فیلتری روش اعمال کرد که دستورهایی که حدود مین و ماکس آنها اشتراک نداره یا اشتراک کمتری داره تو دیتاگرید بمونه؟

یه همفکری نیاز دارم
لطفاً:افسرده:

plus
یک شنبه 23 فروردین 1394, 00:54 صبح
یه همفکری نیاز دارم
لطفاً:افسرده:
اگه شما داده ها رو در یک DataTable داشته باشید میتونید با متد Select (https://msdn.microsoft.com/en-us/library/det4aw50%28v=vs.110%29.aspx) یک Query رو روی اونها اجرا کنید و مقادیر مورد نظر رو فیلتر کنید.

ghazal_mohammady
سه شنبه 25 فروردین 1394, 10:04 صبح
میشه یه مثال بزنین