引用Microsoft.Office.Interop.Excel出現的問題
轉自:http://www.hccar.com/Content,2008,6,11,75.aspx,作者:方繼祥
操作背景:asp.net操作Excel
出現問題:在本地添加引用(com):Microsoft Office 11.0 Object Library,並寫好程序調試正常,部署到服務器時,出現異常 Excel.Application不是對象.
初步診斷:服務器沒有安裝Excel組件
第一步嘗試解決:對服務器安裝Excel等Office組件,進一步測試程序:失敗!
第二步嘗試解決:將Excel.exe生成Interop.Excel.dll,然后用sdk引用該Dll,編譯成功,測試程序:成功!
原因:本地引用的com不會在程序的bin目錄生成dll文件,而程序是根據路徑在尋找dll的.部署到服務器上時,假如Excel等dll與本地路徑不一致,將會拋出異常,定義的Excel對象肯定是不存在的.
具體方法:
1、如何生成Interop.Excel.dll?
進入你的visual studio的sdk下的bin目錄,找到TlbImp.exe文件,如果沒有,請用光盤安裝此文件,詳細說明請參照MSDN。
命令行(cmd)進入bin目錄,運行TlbImp /out:Interop.Excel.dll Office安裝目錄+Excel.exe
此時很可能會報錯:TlbImp error: Unable to locate input type library: 'c:\program files\mcrosoft offi
ce\office\EXCEL.EXE'
此問題很有可能是TlbImp的bug,不支持空格式的路徑;(具體原因不明)不要緊,將Excel.exe拷貝入bin目錄,直接運行TlbImp /out:Interop.Excel.dll Excel.exe,提示“Type library imported to Interop.Excel.dll路徑”
在bin目錄下找到Interop.Excel.dll文件。在你的visual studio里將其引用即可。
2、如果是excel2000或excel2002怎么辦?
如果是Excel2000,則將Excel.exe改成Excel9.olb
Excel2002同2003
3、各種版本的引用組件參數如下:
文件/版本 | Interop.Excel.dll | Interop.Office.dll | Interop.VBIDE.dll | 添加引用\COM組件 |
2000 | V1.3.0.0 | V2.1.0.0 | V5.3.0.0 | Microsoft Excel 9.0 Object Library(EXCEL9.OLB) |
2002(XP) | V1.4.0.0 | V2.2.0.0 | V5.3.0.0 | Microsoft Excel 10.0 Object Library(Excel.EXE文件) |
2003 | V1.5.0.0 | V2.3.0.0 | V5.3.0.0 | Microsoft Excel 11.0 Object Library(Excel.EXE文件) |