我有一个 xll 文件,它有一个函数,我想从 C# 调用该函数。这个 xll 文件在 excel 中使用。任何人都知道如何做到这一点?我直接给出我得到正确值的函数。同样的事情如果我在 c# 中自动化 excel 并从 Microsoft.Office.Interop.Excel 打开 excel 并应用该函数我得到错误
3 回答
xll 只是一个 dll。如果您知道要调用的函数的签名,则可以像调用任何其他函数一样调用它。如果您不知道签名但可以在 Excel 中加载加载项,有一种方法可以让 Excel 告诉您签名。
自动化仅在您运行 Excel 时才有效。一旦您知道签名,就不需要这样做了。
您可能无法直接调用该函数,因为 XLL 将期望 Excel 接口正在驱动。你必须做一些严肃的伪装。
不过,通过 Excel 将其自动化是可行的。
您可以使用一些工具:
在 MSDN Use XLL from C#上也有人问过这个问题,这就是答案:
如果是 COM 项目,您可以通过 Add reference 窗口中的 COM 选项卡添加它。
如果您需要从 dll 创建一个 .NET 程序集,您可以尝试使用类型库导入工具在 dll 周围创建一个包装器:
tlbimp.exe xll.dll /out:xllnet.dll
如果对象不支持 COM,而只支持本机调用,则需要使用 DllImport 属性在平台调用方法。有关更多信息,请参阅平台调用教程。
我给了所有 3 个建议,但没有任何运气。鉴于 XLL 工具的作者Excel-DNA建议使用我怀疑在 Winform/WPF/Console 或 Web 应用程序中使用 XLL 的工具并非易事: https ://stackoverflow.com/a/2865023/495455