Представление методов .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.Могут быть созданы как пользовательские функции (UDF), так и макросы.Код надстройки может находиться в текстовых файлах сценариев, содержащих код VB, C# или F#, или в управляемых DLL-файлах.
Поскольку используются собственные интерфейсы Excel SDK, а не автоматизация на основе COM, надстройки на основе ExcelDna можно легко развернуть и не требуют регистрации.ExcelDna поддерживает версии Excel от Excel '97 до Excel 2007 и включает поддержку типов данных Excel 2007 (большие листы и строки Unicode), а также многопоточный пересчет в Excel 2007.