تعريض أساليب .net كوظائف Excel؟
سؤال
لدي مجموعة من أساليب الحساب الموجودة في .Net DLL.أرغب في إتاحة هذه الأساليب لمستخدمي Excel (2003+) حتى يتمكنوا من استخدامها في جداول البيانات الخاصة بهم.
على سبيل المثال، طريقة .net الخاصة بي:
public double CalculateSomethingReallyComplex(double a, double b) {...}
أرغب في تمكينهم من استدعاء هذه الطريقة فقط عن طريق كتابة صيغة في خلية عشوائية:
=CalculateSomethingReallyComplex(A1, B1)
ما هي أفضل طريقة لتحقيق ذلك؟
المحلول
هناك طريقتان - يمكنك استخدام أدوات Visual Studio لـ Office (VSTO):
http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx
أو يمكنك استخدام COM:
http://blogs.msdn.com/eric_carter/archive/2004/12/01/273127.aspx
لست متأكدًا مما إذا كانت طريقة VSTO ستعمل في الإصدارات الأقدم من برنامج Excel، ولكن يجب أن تعمل طريقة COM بشكل جيد.
نصائح أخرى
يجب عليك أيضًا إلقاء نظرة على ExcelDna (http://www.codeplex.com/exceldna).ExcelDna هو مشروع مفتوح المصدر (مجاني أيضًا للاستخدام التجاري) يسمح لك بإنشاء وظائف .xll الإضافية الأصلية باستخدام .Net.يمكن إنشاء كل من الوظائف المحددة من قبل المستخدم (UDFs) ووحدات الماكرو.يمكن أن يكون رمز الوظيفة الإضافية الخاص بك في ملفات نصية تحتوي على تعليمات برمجية VB أو C# أو F#، أو في ملفات .dll المُدارة.
نظرًا لاستخدام واجهات Excel SDK الأصلية، بدلاً من الأتمتة المستندة إلى COM، يمكن نشر الوظائف الإضافية المستندة إلى ExcelDna بسهولة ولا تتطلب أي تسجيل.يدعم ExcelDna إصدارات Excel من Excel '97 إلى Excel 2007، ويتضمن دعمًا لأنواع بيانات Excel 2007 (ورقة كبيرة وسلاسل Unicode)، بالإضافة إلى إعادة الحساب متعدد الخيوط ضمن Excel 2007.