По многим причинам я установил на свой ноутбук 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). И для этого кода:Как использовать определенную версию Excel в программе C#
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 для Office. Спасибо заранее.
Вы поняли вопрос? – jwg
Да, и я предоставил обходное решение, чтобы избежать использования interop для xlsx-файлов, тем самым избегая конфликта версий. –
Этот обходной путь до сих пор касается проблемы, так как он мало помогает любому, кто будет смотреть на эту страницу. Также последнее предложение неверно. Использование разных версий сборок не повлияет на то, какая версия программы открывается, за исключением того, что использование старых сборок и более новой программы не удастся. – jwg