在我的MVC 5应用程序中,我想使用Microsoft.Office.Interop.Excel
库。我使用了Visual Studio 2013和Office 2013.我添加了一个引用Microsoft.Excel 15.0 Object Library
,在我的课程中我添加了using Excel = Microsoft.Office.Interop.Excel;
当我点击build
时,它没有显示任何错误并告诉我{{1}但是,当我运行我的应用程序时,我收到此错误
Build Complete
它可能是什么?
答案 0 :(得分:9)
您有MS 2010的程序集,但您已安装Office 2013.程序集不向前兼容。您必须安装与您的DLL相同版本的办公室或更好地使用OpenXml sdk之类的东西。
然后看起来缺少一些必要的装配。您必须添加对程序集的引用。
找不到与嵌入式互操作类型匹配的互操作类型''。你错过了装配参考吗? 此方法类似于先前的错误,因为如果一个程序集嵌入类型信息而另一个程序集不嵌入,则会发生此方法。在这种情况下,您有一个程序集assembly1,它引用具有Embed Interop Types的PIA程序集设置为true。然后Assembly1从PIA程序集中公开一个类型,例如作为方法或属性的返回类型。另一个程序集assembly2引用assembly1并使用嵌入类型。如果assembly2也没有引用PIA程序集,则会发生错误,因此无法找到嵌入的类型信息。 要解决此问题,您需要将第二个程序集中的引用添加到PIA程序集,并将Embed Interop Types属性设置为true。因此,两个程序集都将引用PIA程序集,并嵌入类型信息,并且两者都可以使用嵌入类型。
答案 1 :(得分:0)
如果我导出互操作类型,就会发生这种情况。如果错误大约是Excel.Application
,那么在公共类上查找返回Application
引用或具有Application
引用作为参数的公共方法或属性(任何公共的,使得互操作类型可见)。
通过使其成为private
或internal
隐藏该类,属性或方法,或者不返回该类型,或者将互操作类型包装在您自己的包装类中并返回该类相反(反正这是更好的做法。)
答案 2 :(得分:-1)
将引用dll文件添加到Bin文件夹将有助于解决此问题。