#vb.net #winforms #office-2007 #office-automation
Вопрос:
Приложение, находящееся в настоящее время в разработке, имеет требования к использованию MS Word для выполнения проверки орфографии в определенных областях текста в приложении.
В настоящее время у меня есть Office 2007 (который является com-объектами Office 12).
Мой вопрос в том, что если я добавлю в Office 12 объектов, что произойдет с коробками, в которых есть Office 2003? Это относится как к другим блокам разработки, так и к конечным пользователям.
Прав ли я, полагая, что конечным результатом будет то, что возможности заклинаний будут недоступны для этих пользователей? И если бы я использовал объект Office 11, означало бы ли это, что пользователи не смогут выполнить проверку орфографии, если у них установлен Office 07?
Ответ №1:
Мы отказались от попыток использовать зависимость от Word, так как у обоих установлены разные версии или вообще нет установки Office! Вместо этого я выбрал NetSpell.
Ответ №2:
Я предполагаю, что здесь, но если это так, поскольку вы не можете использовать PIA 2007 года (основную сборку взаимодействия) с установкой 2003 года, вы можете попробовать получить доступ к PIA через отражение, так как я бы предположил, что нужные вам вызовы не изменятся между ними, и тогда это не будет иметь значения — вы будете использовать то, что установлено. Если вы также устанавливаете PIA, вы можете либо попросить пользователя сообщить вам, что у него есть, либо быть немного умнее и просто попробовать 2007 год, а если это не удастся, попробуйте 2003 год.
Как я уже сказал, я предполагаю, что здесь, но, возможно, стоит попробовать.
ИЗМЕНИТЬ: Я нашел эту ссылку о Office PIA. Это относится к Excel, но на самом деле охватывает Office в целом. Я не завидую твоей задаче. Похоже, вам нужно будет обнаружить PIA (который может быть установлен или не установлен) и действовать соответственно. По-моему, это похоже на работу для размышлений.
Ответ №3:
Более новые версии Office будут поддерживать большую часть, если не всю совместимость со старыми версиями COM-объектов. Это означает, что если вы хотите программировать для Office 2003 и 2007, вам нужно будет использовать COM-объекты Office 11 в качестве зависимости, поскольку они были самыми новыми, доступными на момент выпуска 2003 года. Пока вы проверяете, что необходимые вам методы существуют в обеих версиях COM-объектов, у вас не должно возникнуть проблем, если вы используете более старые COM-объекты.
К сожалению, хотя я использовал это решение для своей собственной работы, я не проверял его с помощью проверки орфографии. В конце убедитесь, что вы протестировали свой код со всеми версиями Office, с которыми хотите интегрироваться.
Ответ №4:
Моя внутренняя реакция на этот вопрос состоит в том, чтобы просто предложить вам пойти другим путем. Попробуйте использовать сторонний контроль проверки орфографии. Они относительно недороги (и вы можете найти некоторые бесплатные элементы управления). По крайней мере, таким образом вы сможете управлять версией элемента управления, входящего в ваше приложение, и полагаться на его функциональность. Честно говоря, я удивлен, что эта библиотека еще не встроена в Windows. Конечно, это сложно со всеми языками, которые поддерживает Windows, но в наши дни это похоже на копирование/вставку с точки зрения ожиданий пользователей.
Ответ №5:
На самом деле вы можете упаковать как взаимодействия office11, так и взаимодействия office12, необходимые для работы в ОБЕИХ версиях. Это требует небольшой работы, но мне удалось это сделать. Я проверяю в реестре, чтобы узнать, какое взаимодействие вызывать, а затем выполняю проверку орфографии с правильной версией. Он даже заходит так далеко, что проверяет, установлено ли у вас Word, и выдает предупреждение об ошибке, что вы не можете проверить орфографию без наличия Word. Мы привязаны к использованию Word из-за медицинского словаря, который привязан к офису, который мы обязаны использовать.
Выполните поиск по интерфейсам или Com-оболочкам, и я думаю, вы обнаружите, что можете довольно легко использовать и то, и другое.