2013-11-25 92 views
4

在我的MVC 5應用程序中,我想使用Microsoft.Office.Interop.Excel庫。我使用了Visual Studio 2013和Office 2013.我添加了一個參考Microsoft.Excel 15.0 Object Library,並在我的課程中添加了using Excel = Microsoft.Office.Interop.Excel;當我點擊build時,它不顯示任何錯誤並告訴Build Complete,但是當我運行我的應用程序時,出現此錯誤使用Excel = Microsoft.Office.Interop.Excel編譯錯誤

Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1748: Cannot find the interop type that matches the embedded interop type 'Microsoft.Office.Interop.Excel.Application'. Are you missing an assembly reference? 

Source Error: 

[No relevant source lines] 

Source File: Line: 0 

它可能是什麼?

+0

你什麼時候跑這個? –

+0

我正在運行 – Bryuk

+0

爲什麼在使用類似OpenXML或更好的ClosedXML時使用interop?除非你需要使用XLS文件而不是XLSX,否則Office Interop並不是最好的選擇,尤其是當你在同一時間使用像MVC5一樣酷的東西! – JMK

回答

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組件,嵌入類型信息,並且都可以使用嵌入類型。

http://blogs.msdn.com/b/vbteam/archive/2010/06/11/troubleshooting-errors-when-embedding-type-information-doug-rothaus.aspx

+0

我使用Visual Studio 2013和Office 2013!這是在我的描述 – Bryuk

+0

看看我編輯的答案。 –

+0

好多了! – Bryuk

-1

添加引用dll文件到bin文件夾,將有助於解決這個問題。

0

如果我導出互操作類型,會發生這種情況。如果錯誤大約爲Excel.Application,那麼請在公共類中查找公共方法或屬性,該公共類返回Application引用或具有Application引用作爲參數(任何公共內容都會使interop類型可見)。

要麼隱藏該類,屬性或方法,使其成爲privateinternal,要麼不返回該類型,要麼將自己的包裝類中的interop類型封裝起來,並返回該類型(反正這是更好的做法)。