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

 

操做背景:asp.net操做Excel 服务器

出现问题:在本地添加引用(com):Microsoft Office 11.0 Object Library,并写好程序调试正常,部署到服务器时,出现异常 Excel.Application不是对象. asp.net

初步诊断:服务器没有安装Office 和 Excel组件 测试

第一步尝试解决:对服务器安装Excel等Office组件,进一步测试程序:失败! .net

第二步尝试解决:将Excel.exe生成Interop.Excel.dll,而后用sdk引用该Dll,编译成功,测试程序:成功! 命令行

缘由:本地引用的com不会在程序的bin目录生成dll文件,而程序是根据路径在寻找dll的.部署到服务器上时,假如Excel等dll与本地路径不一致,将会抛出异常,定义的Excel对象确定是不存在的. 调试

具体方法: excel

一、如何生成Interop.Excel.dll? code

     进入你的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里将其引用便可。

二、若是是excel2000或excel2002怎么办?

若是是Excel2000,则将Excel.exe改为Excel9.olb
  Excel2002同2003

三、各类版本的引用组件参数以下:

文件/版本
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)