出於多種原因,我已將其安裝在筆記本電腦MSExcel 2003和MSExcel 2007上。我需要兩個版本才能爲每個版本開發特定項目(文檔級項目和應用程序級項目)。 現在我需要做一個WinForm項目來打開一個Excel文件,讀取一個CustomXMLParts並編寫一個新的Excel文件。我正在使用Microsoft \ Office.Interop.Excel的引用,它使用.. \ Visual Studio Tools for Office \ PIA \ Office12 \ Microsoft.Office.Interop.Excel.dll庫(用於Excel 2007)。而對於這樣的代碼:如何在C#程序中使用特定版本的Excel
Microsoft.Office.Interop.Excel.Application excelApplication;
excelApplication = new Microsoft.Office.Interop.Excel.ApplicationClass();
string version = excelApplication.Version;
此時版本爲「11.0」,但我需要打開Excel 2007和它必須是「12.0」,然後在程序嘗試獲得CustomXMLParts,拋出一個異常因爲這種方法在2003年不存在。
如果我卸載Excell 2003,它工作正常,但我需要與兩個(2003年和2007年)工作。當我重新安裝Excell 2003時,它再次失敗。 我檢查屬性「特定版本」,Interop.Excel參考,以確保它是真實的,我試圖修改app.config oldVersion =「12.0.0.0」不與Excel 2003兼容,但沒有任何發生:
<assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71E9BCE111E9429C" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="12.0.0.0"/>
任何想法?
我使用Visual Studio 2008和Visual Studio Tools for Office.Thanks提前。
你明白這個問題嗎? – jwg 2013-04-11 10:53:35
是的,我提供了一種避免使用interop for xlsx文件的解決方法,從而避免了版本衝突。 – 2013-04-11 15:47:49
這個解決方法到目前爲止圍繞這個問題,對於任何人都會看到這個頁面沒有什麼幫助。你最後一句話也是錯的。使用不同版本的程序集不會影響打開哪個版本的程序,但使用較舊的程序集和較新的程序將會失敗。 – jwg 2013-04-11 16:47:40