2011-09-13 49 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