我有一组计算方法坐在.Net DLL中.我想让Excel(2003+)用户可以使用这些方法,以便他们可以在电子表格中使用它们.
例如,我的.net方法:
public double CalculateSomethingReallyComplex(double a, double b) {...}
Run Code Online (Sandbox Code Playgroud)
我想让他们只是通过在随机单元格中键入公式来调用此方法:
=CalculateSomethingReallyComplex(A1, B1)
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?
我正在使用NetOffice编辑Excel电子表格.如果我从Excel用户定义的函数调用代码,它将不允许我编辑调用电子表格.
Excel.Application excelApplication = Excel.Application.GetActiveInstance();
Excel.Worksheet workSheet = (Excel.Worksheet) excelApplication.ActiveSheet;
Excel.Range cell = workSheet.Cells[2, 2];
object value = cell.Value; //works
cell.Value = 3; //Throws Exception
Run Code Online (Sandbox Code Playgroud)
是否有一种解决方法可以让我这样做?
例外是
"System.Runtime.InteropServices.COMException(0x80004005):有关详细信息,请参阅内部异常.--- System.Reflection.TargetInvocationException:调用目标抛出了异常.---> System.Runtime. InteropServices.COMException:来自HRESULT的异常:0x800A03EC ---内部异常堆栈跟踪结束---在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,Int32 culture, String. [namedParameters)在System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams)at System.Type.InvokeMember(String在NetOffice.Invoker.PropertySet(COMObject comObject,String name,对象[] va lue)atExxtice.ExcelApi.Range.set_Value(Object value)at ExcelExamplesCS45.Example01.RunExample()in\psf\home\Documents\Visual Studio 2013\Projects\Excel-REPL\Excel-REPL\Example01.cs:第29行在\ psf\home\Documents\Visual Studio 2013\Projects\Excel-REPL\Excel-REPL\MainClass.cs中的ClojureExcel.MainClass.Test():第310行"