2011-09-13 15 views
0

我有一个xll文件,它有一个函数,我想从C#中调用该函数。 这个xll文件用在excel.any身上有没有想法该怎么做?我试着重新装上xll文件但是我没有得到值。如果我打开excel就像开始 - >程序 - > excel和 excel如果我直接给我的功能,我得到正确value.Same的事情如果我在c#中自动化excel,并从Microsoft.Office.Interop.Excel打开Excel,并应用我得到错误的功能从C调用XLL文件中的函数#

回答

0

你可能不会能够直接调用该函数,因为XLL将期望Excel界面开车。你必须做一些严肃的伪装。

虽然通过Excel自动执行它仍然可行。

+0

大卫感谢info.IF我使用Excel互操作到Excel自动化并在xll中应用公式如oRng.Formula =“= getnumber('abcd','IQ_COMPANY_ID')”;我得到com异常error.Have任何想法如何打开一个Excel启用xll。 – user933316

+0

我不知道。我对XLL一无所知,或者你是如何驾驶它的。 –

0

一个xll只是一个dll。如果您知道要调用的函数的签名,则可以像调用其他函数一样调用它。如果您不知道签名但可以在Excel中加载加载项,则可以通过Excel让您知道签名。

自动化仅适用于运行Excel。一旦你知道签名就没有必要了。

0

有一些工具可以使用:

XLL Plus
XLL Host


的问题也被要求在MSDN上Use XLL from C#,这就是答案:

如果它是一个COM项目,您可以通过添加参考窗口中的COM选项卡添加它。

如果你需要创建DLL .NET程序集,你可以尝试使用类型库导入工具创建一个围绕该DLL的包装:

tlbimp.exe xll.dll /out:xllnet.dll 

如果对象不支持COM,但仅支持本地调用,则需要使用DllImport属性调用方法。有关更多信息,请参阅Platform Invoke教程。


我给所有3条建议,一展身手,但没有任何运气。鉴于XLL工具Excel-DNA建议使用的工具,我怀疑在耗费一个WinForm/WPF /控制台或Web应用程序一个XLL的作者是不平凡: https://stackoverflow.com/a/2865023/495455