Как использовать конкретную версию Excel в программе на C # - PullRequest
4 голосов
/ 18 сентября 2009

По многим причинам я установил на свой ноутбук MSExcel 2003 и MSExcel 2007. Мне нужны обе версии для разработки конкретных проектов для каждой версии (проекты уровня документа и проекты уровня приложения). Теперь мне нужно сделать проект WinForm, который открывает файл Excel, читает CustomXMLParts и записывает новый файл Excel. Я использую ссылку на Microsoft.Office.Interop.Excel, которая использует .. \ Visual Studio Tools для Office \ PIA \ Office12 \ Microsoft.Office.Interop.Excel.dll (это для Excel 2007 ). И для этого кода:

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. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

Вы можете использовать ExcelPackage в Codeplex для ваших документов xlsx. Тогда нет необходимости или с помощью взаимодействия. У них есть пример кода для чтения и записи файлов xlsx.

Таким образом, вы можете продолжать использовать взаимодействие в 2003 году без вмешательства.

Если вам нужно использовать взаимодействие с обеими версиями, вы должны загрузить сборки с использованием каждой версии в отдельном домене приложений, чтобы разделить их.

1 голос
/ 04 ноября 2010

Вероятно, не тот ответ, который вы ищете, но взгляните на этот ТАК вопрос: Попытка сделать Office Automation с Excel 2007, но продолжает использовать Excel 2003

...