.СЕТЬ:Если мой .NET автоматизирует Office, должен ли клиент устанавливать Office?
Вопрос
Если я создаю программу, которая в одной небольшой отдаленной области использует автоматизацию Excel:
произойдет ли сбой приложения, когда понадобится Excel
или приложение не запустится?
Обновлять
Позвольте мне задать тот же вопрос, но более развернуто:
Будет ли приложение использоваться
99,9% пользователей, которые никогда не используют функцию, требующую Excel
- 0% пользователей, так как Excel не установлен.
Позвольте мне задать тот же вопрос по-другому:
Не удастся ли инициализировать приложение, которое ссылается на DLL COM-взаимодействия?
Позвольте мне задать тот же вопрос по-другому:
Не запустится ли приложение, которое не использует Excel, но ссылается на DLL COM-взаимодействия?
Позвольте мне задать тот же вопрос по-другому:
Будет ли использоваться приложение, не использующее Excel, если Excel не установлен, если это приложение зависит от библиотек Office Primary Interop?
Позвольте мне задать тот же вопрос по-другому:
Если мое приложение не использует Excel, должен ли пользователь установить Excel?
Решение
Код будет корректно выполняться до тех пор, пока не попытается выполнить вызов библиотек автоматизации; в этот момент он сгенерирует исключение.
Другие советы
У меня есть приложение, использующее автоматизацию Excel, и я могу с уверенностью сказать, что оно не будет работать во время выполнения, а не во время загрузки.На самом деле мы проверяем, установлен ли он вообще, и показываем кнопку «Показать данные в Excel», только если находим его (но PIA развертываются для всех установок).
Если вы автоматизируете Office...у тебя должен быть Офис!
Однако ответ изменится, если вы измените вопрос так:Могу ли я создать электронную таблицу Excel, не имея Excel на клиенте?
Для этого существует множество сторонних средств управления;вы можете писать непосредственно в спецификацию XML MS SpreadML (http://msdn.microsoft.com/en-us/library/aa140066(office.10).aspx;или используйте сторонние библиотеки, которые это делают (например, http://www.carlosag.net/Tools/ExcelXmlWriter/).
Я думаю, что это потерпит неудачу во время выполнения, потому что сборки взаимодействия должны иметь возможность загружаться без COM-компонентов, доступных в клиентской системе.
ОБНОВЛЯТЬ:Время выполнения должно означать, когда оно вам нужно!
При использовании COM в Win32 при необходимости произойдет сбой.