3.1.3. Could not load file or assembly ‘Microsoft.Office.Interop.Excel

使用C#操作Excel常会出现类似错误:

Could not load file or assembly ‘Microsoft.Office.Interop.Excel, Version=14.0.0.0

其可能原因,现总结如下:

C#的exe用到了excel的话,希望拿到别人的地方也正常运行不报错的话,

其中,别的地方:

  • 可能没装excel
  • 也可能装了excel,但是版本低

那么有几种选择:

  1. 最好自己在exe中集成了对应的excel的dll库。

    关于,集成dll到exe中,简述为:

    1. 把dll加到自己的资源resource中
    2. 把dll加到自己的项目中,且属性设置为 嵌入的资源(Embedded Resource)
    3. 自己的类的初始化函数中,加上对应的load dll的相关代码

    详见:【已解决】C#中集成DLL库到自己的exe程序中

  2. 即使不集成excel的dll,在引用excel的dll
    1. 也要尽量引用低版本

      比如别人已装的excel,即Office是Office12

      那么你也就不要去引用Office14==Office2010:

      C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Excel.dll

      了,而去引用Office12==Office2007:

      C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll
    2. 或者是和对方电脑中安装的excel的版本一致

      当然,最好确认一下,对方的电脑中装了哪个版本的Office(的excel)

      比如是Office 2010==Office14,那么你也就去引用对应的Office14:

      C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Excel.dll

      就好了。

详见:【已解决】虽然已经安装了Office的Excel但是C#的exe还是运行出错:Could not load file or assembly ‘Microsoft.Office.Interop.Excel, Version=14.0.0.0