Expondo métodos .net como funções do Excel?
Pergunta
Eu tenho um conjunto de métodos de cálculo em uma DLL .Net.Gostaria de disponibilizar esses métodos aos usuários do Excel (2003+) para que possam utilizá-los em suas planilhas.
Por exemplo, meu método .net:
public double CalculateSomethingReallyComplex(double a, double b) {...}
Gostaria que eles chamassem esse método apenas digitando uma fórmula em uma célula aleatória:
=CalculateSomethingReallyComplex(A1, B1)
Qual seria a melhor maneira de conseguir isso?
Solução
Existem dois métodos - você pode usar o Visual Studio Tools for Office (VSTO):
http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx
ou você pode usar COM:
http://blogs.msdn.com/eric_carter/archive/2004/12/01/273127.aspx
Não tenho certeza se o método VSTO funcionaria em versões mais antigas do Excel, mas o método COM deve funcionar bem.
Outras dicas
Você também deve dar uma olhada no ExcelDna (http://www.codeplex.com/exceldna).ExcelDna é um projeto de código aberto (também gratuito para uso comercial) que permite criar suplementos .xll nativos usando .Net.Podem ser criadas funções definidas pelo usuário (UDFs) e macros.O código do suplemento pode estar em arquivos de script baseados em texto contendo código VB, C# ou F# ou em .dlls gerenciados.
Como são usadas interfaces nativas do SDK do Excel, em vez da automação baseada em COM, os suplementos baseados em ExcelDna podem ser facilmente implantados e não exigem registro.ExcelDna oferece suporte a versões do Excel do Excel '97 ao Excel 2007 e inclui suporte para os tipos de dados do Excel 2007 (planilha grande e strings Unicode), bem como recálculo multithread no Excel 2007.