2009-09-18 26 views
4

出於多種原因,我已將其安裝在筆記本電腦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提前。

回答

1

你可以使用Codeplex上ExcelPackage您XLSX文件。那麼就沒有必要或使用互操作。他們有讀取和寫入xlsx文件的示例代碼。

通過這種方式,您可以繼續使用interop for 2003而不會產生干擾。

如果您需要在兩個版本中使用interop,則應該使用各個版本在單獨的AppDomain中加載程序集,以便將它們分開。

+0

你明白這個問題嗎? – jwg 2013-04-11 10:53:35

+0

是的,我提供了一種避免使用interop for xlsx文件的解決方法,從而避免了版本衝突。 – 2013-04-11 15:47:49

+0

這個解決方法到目前爲止圍繞這個問題,對於任何人都會看到這個頁面沒有什麼幫助。你最後一句話也是錯的。使用不同版本的程序集不會影響打開哪個版本的程序,但使用較舊的程序集和較新的程序將會失敗。 – jwg 2013-04-11 16:47:40

相關問題