轉自:http://www.cnblogs.com/Mainz/archive/2009/11/11/microsoft_office_interop_excel.html
操作背景:asp.net操作Excel
出現問題:在本地添加引用(com):Microsoft Office 11.0 Object Library,並寫好程式調試正常,部署到伺服器時,出現異常 Excel.Application不是對象.
初步診斷:伺服器沒有安裝Office 和 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檔案) |
(另外一種既不需要用戶端安裝excel也不需要安裝Microsoft.Jet.OLEDB.4.0的方法: http://www.codeproject.com/KB/office/ExcelReader.aspx)