(转).net使用Office组件读取Excel,引用Microsoft.Office.Interop.Excel出现的问题

内容转自:http://www.tech-q.cn/thread-2093-1-1.html

出现问题:在本地添加引用(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文件)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章