У меня есть набор методов расчета, находящихся в DLL .Net. Я хотел бы сделать эти методы доступными для пользователей Excel (2003+), чтобы они могли использовать их в своих электронных таблицах.
Например, мой метод .net:
public double CalculateSomethingReallyComplex(double a, double b) {...}
Я бы хотел, чтобы они могли вызывать этот метод, просто набрав формулу в случайной ячейке:
=CalculateSomethingReallyComplex(A1, B1)
Как лучше всего этого добиться?





Есть два метода - вы можете использовать Visual Studio Tools for 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.