Поддержка различных версий Office с помощью Office Automation
Мы создали приложение, которое использует Office 2007 (Excel 2007) для чтения данных с листа Excel. Однако. Я заметил, что, когда я хочу развернуть приложение в системе с установленным Office 2003, он выходит из строя, потому что для этой версии офиса необходимо ссылаться на другие PIA (и другие dll).
Нужно ли мне компилировать разные версии моего приложения, чтобы иметь возможность поддерживать разные версии Office или есть более элегантное решение для этой проблемы?
Я использую Visual Studio 2010 (С#) и платформу .Net 4.0.
Ответы
Ответ 1
Когда вы используете .NET 4, вы можете использовать "встроенные" PIA (также называемые "Нет PIA" ). Измените параметр в ссылке Office, чтобы "Вставить типы взаимодействия" было "Истина".
Пока вы используете только функции Office, которые поддерживаются на компьютере, на котором вы развертываете, вы должны быть в порядке.
Это также означает, что:
- Вам не нужно беспокоиться о том, что сам PIA не присутствует на целевой машине
- Любые методы или свойства типа VARIANT
в исходном интерфейсе COM теперь представлены с использованием dynamic
в вашем коде, что упростит вашу жизнь
Ответ 2
В зависимости от того, есть ли у вас какие-либо другие требования (скажем, чтение данных из excel), вы можете использовать драйвер OLEDB для подключения к файлу excel и запросить его по-разному.
Пример:
http://codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/
Ответ 3
Вы можете ссылаться на PIA для нескольких версий офиса и определять во время выполнения, из которого следует перенаправить ваши вызовы.