¿Exponer métodos .net como funciones de Excel?
Pregunta
Tengo un conjunto de métodos de cálculo en una DLL .Net.Me gustaría que esos métodos estén disponibles para los usuarios de Excel (2003+) para que puedan usarlos en sus hojas de cálculo.
Por ejemplo, mi método .net:
public double CalculateSomethingReallyComplex(double a, double b) {...}
Me gustaría permitirles llamar a este método simplemente escribiendo una fórmula en una celda aleatoria:
=CalculateSomethingReallyComplex(A1, B1)
¿Cuál sería la mejor manera de lograr esto?
Solución
Hay dos métodos: puede utilizar Visual Studio Tools para Office (VSTO):
http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx
o puedes usar COM:
http://blogs.msdn.com/eric_carter/archive/2004/12/01/273127.aspx
No estoy seguro de si el método VSTO funcionaría en versiones anteriores de Excel, pero el método COM debería funcionar bien.
Otros consejos
También deberías echar un vistazo a ExcelDna (http://www.codeplex.com/exceldna).ExcelDna es un proyecto de código abierto (también gratuito para uso comercial) que le permite crear complementos .xll nativos utilizando .Net.Se pueden crear funciones definidas por el usuario (UDF) y macros.Su código de complemento puede estar en archivos de script basados en texto que contengan código VB, C# o F#, o en archivos .dll administrados.
Dado que se utilizan las interfaces nativas del SDK de Excel, en lugar de la automatización basada en COM, los complementos basados en ExcelDna se pueden implementar fácilmente y no requieren registro.ExcelDna admite versiones de Excel desde Excel '97 hasta Excel 2007 e incluye soporte para los tipos de datos de Excel 2007 (hoja grande y cadenas Unicode), así como recálculo multiproceso en Excel 2007.