PDA

View Full Version : استفاده از توابع اکسل در سی شارپ



hamed jalili
سه شنبه 24 اردیبهشت 1392, 20:10 عصر
با سلام ،

من می خواهم از توابع موجود در اکسل برای انجام پاره ای از محاسبات در محیط C# استفاده کنم

مثلا از این تابع


=CHISQ.DIST.RT(x,df)

از Third-party نمی خواهم استفاده کنم

آیا روشی هست که بتوان از این توابع در C# استفاده کرد ؟

tooraj_azizi_1035
چهارشنبه 25 اردیبهشت 1392, 11:18 صبح
Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction;
int result = wsf.Percentile(obj, 0.75);


Another:


using Microsoft.Office.Interop.Excel;
static void Main(string[] args)
{

Application a = new Application();
double x = a.WorksheetFunction.Sum(1, 2);
Console.WriteLine("Sum = {0}", x);

}

hamed jalili
چهارشنبه 25 اردیبهشت 1392, 12:46 عصر
روش اول جالب به نظر میاد .

آیا اگر excel در کامپیوتر مقصد نصب نباشه ، همچنان برنامه ای که از این روش برای انجام محاسباتش استفاده می کنم ، بدون مشکل اجرا خواهد شد ؟
منظور من از این سوال اینکه ، این روش ، درخواست من رو به excel می فرسته ، اجرا می کنه و جواب رو به من نشون میده و یا اینکه تابع مورد درخواست من رو از کلاس تعریف شده در برنامه ادغام میکنه ؟

tooraj_azizi_1035
چهارشنبه 25 اردیبهشت 1392, 21:33 عصر
Microsoft.Office.Interop.Excel در مسیر اجرای برنامه کپی میشه. مشکلی نیست.
البته مطمئن شید که خاصیت CopyLocal اسمبلی برابر True هست. (در قسمت References)

hamed jalili
چهارشنبه 25 اردیبهشت 1392, 21:51 عصر
من هر دو روش رو تست کردم ، روش اول به نظر سریعتر میاد .

من هر دو روش رو روی یک مجموعه 10000 تایی اجرا کردم [اصولا نباید نتایج متفاوتی داشته باشند] که روش اول در 3 ثانیه و روش دوم در 20 ثانیه محاسبات رو انجام دادن ( البته با یه کامپیوتر نه چندان سریع )

در محاسباتی که من انجام میدهم ، 3 ثانیه زمان نسبتا زیادی به حساب میاد ، بنابراین می خواهم بدونم که آیا روش سریعتری نیز برای انجام این کار وجود داره ؟