Microsoft office 2007 primary interop assemblies что это
Сведения об ошибке:
Исправление System.Inval . Эта операция завершилась неудачно, потому что вызов ************** на COM-компоненте для интерфейса с I >
Я создал ссылку на Microsoft.Office.Interop.Excel.dll в Office 14 Primary Interop Assembly, которая поставляется с VS 2012, а также для версии dll Office 12 и не устраняет проблему. Я пробовал регистрировать dll с regasm, но это тоже не помогает.
Я могу создать рабочий лист wrksht в следующей строке ОК с DLL Office 14 и Office 12, поэтому проблема кажется только влияющей на определение рабочей книги.
17 декабря 2013 года
Попробовал переустановку Office 2007 безрезультатно, но нашел это решение, которое сработало. Это было на
Диаграммы создает и открывает.
Проблема появляется во второй раз. Первая была где-то полгода назад. Точно удалял раздел . Но тогда и на диаграммах ошибку выдавал.
Пошел искать раздел , его, конечно же, не нет, потому что удалял его.
Искал на всем диске через поиск, не нашел.
Так же у меня на компьютере стоит Visual Studio 2019. В прошлый раз вроде помогла ее переустановка (удалил 2017 и поставил 2019).
Сейчас тоже удалил ее и установил заново, переустановил SQL Server 2014. Не помогло.
Запустил инструмент восстановления
Запуск кода ошибки Windows 0x8002801c (TYPE_E_REGISTRYACCESS. Эта ошибка связана с ошибкой доступа к реестру OLE.) Может замедлить ваш тег. Поиск в этом руководстве поможет вам решить проблему с регистрацией раз и навсегда.
Когда вы пытаетесь сохранить файлы OCX в Windows, вы можете увидеть этот код ошибки, особенно если вы используете метод командной строки для использования regsvr32.
Либо повреждение, либо отсутствие файла реестра могут быть одной из основных причин ошибки 0x8002821C, либо существует конфликт во всей вашей компьютерной системе, который препятствует доступу операционной системы к необходимым загрузочным файлам или правильной загрузке файлов.
- Откройте проводник и перейдите в раздел Windows. Затем перейдите в Windows> System 32 и используйте панель поиска для поиска файла OCX.
- Скопируйте файл OCX в буфер обмена. Затем вернитесь в папку Windows и откройте папку sysWOW64. Затем просто вставьте в него файл OCX.
- Откройте меню «Пуск» (левый нижний угол) и введите «cmd». Затем щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».
- В командной строке верхнего уровня введите regsvr32 + OCX component. В нашем случае последний заказ будет «regsvr32 OCX». После нажатия клавиши Enter вас спросят, был ли файл успешно сохранен.
Исправление обновления ноября 2019:
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
Это и есть. Это и есть. Эти четыре шага можно использовать для предоставления соответствующих разрешений любому файлу OCX, вызывающему код ошибки 0x8002801. В большинстве случаев вы можете использовать его для регистрации компонента ActiveX и решения проблемы.
Использовать восстановление системы
Установите разрешения для библиотеки под своим именем пользователя в редакторе реестра.
- Нажмите Пуск; введите regedit в поле Начать поиск и нажмите Enter.
- Когда будет предложено проверить учетную запись пользователя, нажмите Да.
- Перейдите в редактор реестра (regedit) и введите ключ HKEY_CLASSES_ROOT TypeLib
- Щелкните правой кнопкой мыши на TypeLib, выберите Permissions, затем перейдите на вкладку Security.
- Проверьте, есть ли ваше имя пользователя в списке пользователей, если это так, убедитесь, что у вас есть полный контроль / удаление ограниченных пользователей из списка.
- В противном случае нажмите «Добавить» и введите имя пользователя. После добавления убедитесь, что пользователь имеет полный контроль.
- Примените изменения и закройте редактор реестра.
- Перезагрузите компьютер
Примечание: пожалуйста, сделайте резервную копию журнала перед сменой авторизации.
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Разобравшись с функциональными возможностями программы Windows 7 Upgrade Advisor, переходим к следующей, более комплексной программе, под названием Microsoft Assessment and Planning Toolkit . Область применения Windows 7 Upgrade Advisor ограничивается домашним использованием, либо использованием в небольших организациях. MAP , в противоположность Upgrade Advisor, используется в крупных сетях и в своей работе использует более мощные средства, например сканирование по сети и хранении данных в БД SQL .
Основные функции и системные требования MAP 4.0
MAP является бесплатным приложением, позволяющим оценить как программную, так и аппаратную часть IT инфраструктуры организации, чтобы определить, какие технологии от Microsoft могут помочь нам удовлетворить повседневные нужды. У MAP есть предшественник со времен Windows Vista - Windows Vista Hardware Assessment Solution Accelerator, созданный с целью помочь организациям оценить готовность компьютерной инфраструктуры к установке Windows Vista и Microsoft Office 2007.
Основные функции MAP 4.0:
- Генерация отчетов готовности к переходу на новую операционную систему (отчеты могут быть как краткими, так и детальными).
- Полная инвентаризация программного и аппаратного обеспечения, при помощи WMI ( Windows Management Instrumentation) и SNMP (Simple Network Management Protocol), обнаружение ролей серверов.
- Полный анализ совместимости программных средств для проверки готовности инфраструктуры к переходу на Windows 7, Windows Server 2008 R2, Microsoft Office 2007 и виртуализацию Microsoft Application Virtualization , а также в качестве помощи при планировании миграции физических компьютеров в среду Hyper-V или Virtual Server 2005 R2.
Требования для установки MAP 4.0:
- Одна из перечисленных операционных систем
- Windows XP SP2 или более поздняя версия
- Windows Vista Ultimate , Enterprise или Business
- Windows 7 Professional, Enterprise или Business
- Windows Server 2003 SP1 или более поздняя версия
- Windows Server 2003 R2
- Windows Server 2008
- Windows Server 2008 R2
Познакомившись с основными функциями и системными требованиями MAP 4.0, перейдем к его более глубокому изучению. И начнем мы, пожалуй, с его установки.
Установка MAP 4.0
Установки MAP 4.0 не имеет особых сложностей, тем не менее, имеет некоторые нюансы, поэтому стоит подробней на ней остановиться, чтобы заранее ответить на все возможные вопросы.
В главном окне нас приветствует мастер установки. Он информирует о том, что во время установки необходимо произвести инсталляцию Microsoft SQL Server Express Edition и предлагает 2 варианта: либо загрузить SQL сервер самостоятельно и во время установки указать путь к устанавливаемому файлу, либо подключить компьютер к Интернет и SQL сервер будет загружен автоматически. Также на этом этапе можно выбрать использовать ли подключение к Интернет для обновления базы совместимого оборудования и обновлений программных продуктов, как во время установки, так и во время использования MAP. Для этого необходимо оставить галочку напротив "Automatically check for device compatibility, reference information and updates from www.microsoft.com during setup and application usage" (рис. 6.3.).
Следующим этапом идет проверка наличия программных продуктов необходимых для корректной работы MAP. В состав проверки входят такие параметры как:
Если проверка пройдена успешно, то перед нами не появляется окно, изображенное на рис. 6.4. В данном окне напротив проверенных и совместимых компонентов находится зеленая галочка, в противном случае красный крестик.
- Принять лицензионное соглашение
- Выбрать папку для установки
- Загрузить SQL сервер с Интернет или указать расположение дистрибутива
- Принять лицензионное соглашение устанавливаемого SQL сервера
- После установки запустить MAP, т.е. не снимаем галочку "Open the Microsoft Assessment and Planning Toolkit Wizard"
- Выйти из мастера установки нажатием кнопки Finish.
Основные возможности MAP 4.0
Данный оценщик позволяет определить совместимость программного и аппаратного обеспечения для операционной системы Windows 7. Производится сканирование компьютеров, с помощью WMI осуществляется сбор сведений и выводятся графики готовности к переходу на новую операционную систему.
Определяет совместимость программного и аппаратного обеспечения для поддержки Windows Server 2008 R2. Данные собираются при помощи WMI . Строит графики и предлагает решения для достижения совместимости.
Данный оценщик позволяет определить совместимость программного и аппаратного обеспечения для операционной системы Windows Vista. Производится сканирование компьютеров, с помощью WMI осуществляется сбор сведений и выводятся графики готовности к переходу на эту операционную систему.
Определяет совместимость программного и аппаратного обеспечения для поддержки Windows Server 2008. Данные собираются при помощи WMI . Строит графики и предлагает решения для достижения совместимости.
Составляет отчет по компьютерам, запущенным в среде виртуализации Microsoft и VMware.
Сканирует и анализирует роли серверов и виртуальные компьютеры, запущенные в системе Windows Server.
Введение
Office Open XML, также известный как OpenXML или OOXML, представляет собой формат на основе XML для офисных документов, включая текстовые документы, электронные таблицы, презентации, а также диаграммы, фигуры и другой графический материал. В июне 2014 года Microsoft выпустила исходный код Open XML SDK на GitHub для работы с таким форматом.
У этой библиотеки есть серьёзные преимущества:
не требует установки Microsoft Office,
высокая скорость работы,
открытый исходный код.
Без минусов тоже не обошлось:
Эти минусы определённо дополняют друг друга. Собственно, это и стало причиной создания этого материала.
Боль разработчиков Office
Основы
Прежде чем приступить к разбору примеров, стоит понять, с чем вообще работают эти две библиотеки и в чём состоит разница их подходов.
Word документ — это набор запакованных xml-документов. Все элементы структурированы под тегами.
Например, параграф внутри документа будет выглядеть примерно вот так:
Сборка Interop.Word немного абстрагируется от этой структуры и часто работает с некоторым участком – Range – документа. А Open XML SDK идёт по пути отражения внутренней структуры документа в самом коде. Параграфы <w:p>, участки текста <w:t> и всё остальное становятся объектами в самом коде. Если вы не создадите тело документа, параграф и других обязательных "родителей", то и добавлять текст будет некуда.
На скриншоте как раз изображена внутренняя структура основного файла для документа Word – document.xml. Этот файл содержит само наполнение документа.
Скриншот сделан в очень нужной для работы с Open XML утилите Open XML SDK 2.5 Productivity Tool. К моменту написания статьи эта утилита была удалена с сайта Microsoft, а в репозитории Open-XML-SDK добавлена ссылка на некий DocxToSource, который должен стать заменой устаревшего Productivity Tool. Однако эта замена всё ещё является прототипом, поэтому пока лучше постараться найти старый добрый Productivity Tool. Старая утилита позволяет просмотреть строение документа, познакомиться с автогенерированным кодом.
Также она позволяет сравнить два разных документа (и код для их создания, и их внутреннее строение).
Примеры
Для Interop.Word во всей статье примем такой псевдоним для удобства чтения:
Также для упрощения будем называть Open XML SDK просто Open XML.
Создание документа
Interop.Word:
Тут всё достаточно просто, но всё равно есть свои подводные камни. При работе с Interop мы взаимодействуем не просто с некоторым объектом в памяти, а с COM-объектом. Поэтому возникает необходимость завершать все процессы после окончания работы программы. Эта проблема не раз поднималась на Stack Overflow (1, 2), и ей предложено множество разных решений.
Есть решение с участием Marshal Class, являющимся частью InteropServices.
Однако в таком случае можно упустить какие-нибудь процессы.
Есть более надёжный вариант с обращением к GC:
Эти методы надо вызвать после того, как вся работа с COM-объектами будет завершена.
Если не завершить процессы, то при активном дебаге можно устроить себе такую ситуацию:
Но даже если в коде присутствует закрытие процессов после окончания работы, при прерывании программы вручную или её падении процесс останется запущенным. Такого недостатка нет при создании и работе с документом через Open XML.
Open XML:
Обратите внимание на добавление SectionProperties, они понадобятся нам позже.
Добавление параграфа
Interop.Word
Текст также можно сделать жирным или курсивным через параметр Font:
Изменить размер шрифта можно через:
Выравнивание текста выполняется через ParagraphFormat.Alignment:
Open XML:
В случае с Open XML жирным или курсивным текст можно сделать через:
Изменение размера шрифта в этом случае немного неинтуитивно, но согласуется с общей логикой работы с Open XML:
Важно перед этим не забыть добавить к параграфу свойства:
Вставка заголовка
Предположим, что нам нужно вписать в документ заголовок. В случае Interop.Word нужно всего лишь небольшое дополнение к вставке текста, чтобы получить заголовок:
Interop.Word:
В этом случае сначала задаём Range для записи нового текста и присваиваем ему стиль Heading 1.
Open XML:
Тут, казалось бы, всё очень похоже. Аналогично добавляем параграф и в случае с Open XML организуем нужную иерархию объектов.
Однако на самом деле в случае с Open XML коварным оказывается добавление стиля. Interop.Word работает с реальным полноценным документом, как если бы вы запустили Word и нажали создать. А вот Open XML работает только с тем, что было создано. И если вы добавляете текст документу, созданному через Open XML, а не через Interop.Word, то в нём будут отсутствовать, например, стили. Соответственно, никакого стиля Heading1 в таком документе не будет. Его нужно сначала добавить.
Удобнее всего добавлять нужный стиль при создании документа. Есть два варианта: перенести стили из готового Word-документа или добавить эти стили вручную.
В первом случае в документе, из которого будет браться стиль, нужно обязательно применить искомый стиль. Сам перенос требует достаточно много кода, благо, в официальной документации есть мануал на эту тему.
Для второго варианта нам поможет Productivity Tool для Open XML, упоминавшийся ранее. Чтобы получить код, нужный для добавления желаемого стиля, создаём чистый документ Word, используем в нём нужный стиль и "скармливаем" этот документ утилите. Далее через использование кнопки Reflect Code на /word/styles.xml в структуре документа мы получим реализацию метода GeneratePartContent. В нём мы ищем реализацию нужного стиля и всё, что с ним связано, включая StyleParagraphProperties, StyleRunProperties и т.д.
Для стиля Heading 1 нужный нам автосгенерированный код будет выглядеть примерно так:
Чтобы добавить перенесённый стиль к генерируемому документу, нужно создать набор стилей Styles и добавить стиль к набору. Далее к документу нужно добавить StyleDefinitionsPart и присвоить группу стилей. Выглядеть это будет вот так:
У себя мы решили использовать вариант с шаблонным документом, чтобы в будущем при появлении необходимости в каком-либо стиле нужно было лишь использовать его в шаблоне и работать с ним в коде вместо того, чтобы каждый раз рыться в ProductivityTool и копировать себе полотна кода с объявлением нужного стиля.
Смена ориентации страницы
Для нашего отчёта нам нужна была именно ландшафтная ориентация страницы.
Interop.Word:
У документа получаем нужный Range (страниц или всего документа) и задаём ландшафтную ориентацию.
Open XML:
C Open XML в этом случае всё не настолько абстрактно, как хотелось бы. Если вы инициализируете в PageSize только поле Orient, то ничего не изменится. Width и Height тоже нужно менять.
Гиперссылки
Interop.Word:
Тут всё просто: как обычно, получаем нужный Range и добавляем гиперссылку. У метода Add много параметров, и можно сконструировать более сложную ссылку.
Open XML:
Из существенных отличий тут то, что url нужно сначала обернуть в Uri и создать связь url с гиперссылкой через AddHyperlinkRelationship. Потом при создании самой гиперссылки, нужно присвоить полю Id новой гиперссылки Id созданной ранее связи.
Картинки
Interop.Word:
Тут всё достаточно просто, а с Open XML всё оказалось крайне сложно.
Open XML:
Для добавления картинки необходимо соблюсти сложную иерархию объектов с определёнными параметрами. Хорошо, что есть документация на этот счёт. Поэтому пропустим код, требуемый для добавления картинки в этой статье. Разберём ещё один момент, который почему-то не упоминается в документации. Можете заметить, что в том коде нигде не передаётся размер картинки. Фиксируется её размер тут:
Если использовать этот код, то вместо нормальной картинки, будет вставлено малюсенькое изображение. Его реальный размер никак не изменится, но при отображении оно будет отмасштабировано до таких размеров:
Дело в том, что масштаб отображения картинки здесь завязан на такую вещь, как EMU (English Metric Units).
Для того чтобы передавать методу добавления картинки привычные размеры в пикселях, потребуется следующее преобразование:
Тут мы получаем количество EMU на пиксель, приняв значение PPI за 96, и умножаем полученное значение на нужное количество пикселей для ширины и высоты. В итоге у наc есть нужная нам ширина и высота в EMU. Их мы и передаём как Cx и Cy для Extent и Extents:
Таблицы
Interop.Word:
Генерация таблицы через Interop.Word достаточно прямолинейна. Разберём пример, как можно было бы вставить таблицу из квадратной матрицы строк.
Параметры метода Add — DefaultTableBehavior и AutoFitBehavior — как видно из их названия, отвечают за поведение таблицы при необходимости изменения размера под содержимое ячеек. Им присваиваются значения перечислений WdDefaultTableBehavior и WdAutoFitBehavior соответственно. Сам метод Add создаёт в документе таблицу с нужными нам параметрами.
Стиль к таблице можно применить следующим образом:
Также для красивого выделения первого столбика, если он является заголовочным, можно присвоить true полю oTable.ApplyStyleFirstColumn.
Расстояние между параграфами текста контролируется через oTable.Range.ParagraphFormat.SpaceAfter. Для компактного отображения таблицы можно использовать
Также можно устанавливать тип написания текста к строкам или колонкам:
Используя эти возможности, можно получить вот такую таблицу:
Open XML:
При создании таблицы с нуля с Open XML стоит помнить о том, что никаких ячеек или строк к моменту ввода данных не существует. Их нужно сначала создать, соблюдая внутреннюю иерархию.
Поэтому при проходе по матрице мы для каждой строки создаём TableRow, а потом для каждого элемента в строке создаём TableCell, куда добавляем новые Paragraph, Run и Text с соответствующим значением из матрицы. TableCellProperties лучше также добавить сразу, чем потом при дальнейшей работе с таблицей наткнуться на System.NullReferenceException при попытке добавить свойство ячейке.
Если мы не зададим в TableProperties ни стиля, ни Borders, то таблица будет выглядеть вот так
Границы таблицы формируются через TableBorders.
Перечисление BorderValues здесь задаёт стиль границ.
TableBorders нужно добавить к TableProperties через
Границы таблицы можно не задавать, если ей будет присвоен какой-нибудь стиль. Главное не забыть, что стиль сначала нужно добавить к документу.
Задаётся стиль достаточно просто:
Его так же, как и границы, нужно добавить к TableProperties:
Для того чтобы таблица заняла всю ширину страницы можно использовать TableWidth заданную следующим образом:
Значение 5000 тут взято "не из воздуха". Тип единицы ширины здесь мы задаём TableWidthUnitValues.Pct – единицы ширины в одну пятидесятую процента страницы или 0,02%. В итоге пять тысяч Pct это 100% ширины страницы.
Этот параметр добавляется к TableProperties аналогичным образом:
Важный момент: TableProperties должны быть добавлены к таблице до самих данных для того, чтобы они работали корректно. Их можно добавить и после других объектов, но тогда уже стоит использовать
Раскраска таблиц
Для формирования нашего отчёта нам нужно было раскрасить ячейки в некоторых таблицах документа.
Interop.Word:
где oTable – это созданная нами ранее таблица, i и j — это индексы нужной ячейки. Присваиваемое значение – перечисление WdColor.
Open XML:
где tc – это TableCell, с которой идёт работа. Полю Fill присваивается строка с Hex-значением цвета.
Разрыв страницы
В нашем случае отчёт генерируется последовательно, поэтому разрыв страницы нужно было вставить после последнего добавленного текста.
Interop.Word:
Open XML:
Тип разрыва меняется через перечисление BreakValues.
Footer/Header
Также нам нужны были футеры/хедеры в документе.
Interop.Word:
Через headerRange.Font можно поменять параметры текста, например размер, шрифт, цвет и т.д. А headerRange.ParagraphFormat.Alignment, как следует из названия, задаёт выравнивание текста. Это поле принимает значения WdParagraphAlignment.
Open XML:
Тут сложность состоит в том, что футер/хэдер сам по себе хранится в отдельном .xml файлике. Поэтому нам нужно связать хэдер/футер с содержанием документа через SectionProperties.
Если нужно, чтобы текст перезаписывался на новый при вызове метода добавления хедера, то вместо
Для футера нужно будет передать mainDocumentPart.FooterParts.
Заключение
Описанные методы работы с Open XML SDK можно собрать в библиотеку классов для внутреннего использования в компании, что мы и сделали. Создание Word документов стало даже удобнее, чем было с Word Interop API.
Здесь может возникнуть закономерный вопрос, есть ли готовые библиотеки на основе Open XML SDK для упрощённой работы с документами? Ответ – однозначно да. Но, к сожалению, поддержка таких библиотек быстро прекращается. Истории создания таких проектов все одинаковые: программисты начинают работать с Word, осознают неудобство существующей инфраструктуры, дорабатывают её — и некоторые библиотеки публикуются на GitHub. Даже если удастся найти относительно свежую версию подобной библиотеки, то, скорее всего, она была реализована под задачи конкретного проекта, и в вашем проекте всё равно будет неудобной в использовании. Плюс появится риск остаться с неподдерживаемой библиотекой.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Victoria Khanieva, Svyatoslav Razmyslov. Tutorial: how to port a project from Interop Word API to Open XML SDK.
Несмотря на обилие различных дополнений к Microsoft Office от сторонних поставщиков, для корпоративных разработчиков популярный пакет офисных приложений долгое время оставался в некотором смысле «вещью в себе» – полноценно интегрировать его в собственные решения было не так-то просто. Однако корпорация не прекращает попытки превратить Microsoft Office в мощную программную платформу для серьезных решений и предлагает для этого все более совершенные инструменты.
Хотя Microsoft Office действительно стал де-факто стандартом среди инструментов для работы с документами, его успехи в сфере автоматизации бизнес-процессов (ввода и обработки информации) гораздо скромнее. Программисты предпочитают не связываться с ограничениями Visual Basic for Applications (VBA) и готовы пожертвовать привычным для пользователей интерфейсом и широкими возможностями пакета в угоду простоте построения и большей управляемости конечных решений, к тому же нередко политика безопасности подразумевает полное отключение средств VBA. Альтернативный подход с применением COM также не заслужил особого признания по причине своей сложности, слабой документированности интерфейсов и значительных проблем при отладке готовых продуктов. В лучшем случае приложения Microsoft Office кое-как взаимодействовали с корпоративными системами, но отнюдь не становились центральным звеном.
Долгий путь от VBA к VSTO
Выяснилось однако, что крайне сложно (если вообще реально) придумать инструмент, в равной мере устраивающий разные категории разработчиков – от обычных пользователей, автоматизирующих рутинные операции, до создателей распределенных корпоративных систем. Причем с учетом изначального позиционирования Microsoft Office в худшем положении оказались именно последние, и простым совершенствованием весьма отставшего от времени языка программирования VBA ситуацию было не изменить – требовалось какое-то кардинальное решение.
Создание панелей задач для Microsoft Office ничем не отличается от разработки интерфейса с помощью WinForms |
Хотя первая версия VSTO вполне справилась со своей основной задачей, она все же не вызвала заметного ажиотажа. Во многом это можно объяснить относительной новизной (на то время) предложенной платформы и консерватизмом разработчиков. Кроме того, пакет нельзя назвать легким в использовании: он требовал достаточно серьезных усилий по освоению новой парадигмы программирования, прилагать которые были готовы далеко не все – в отличие от подкупающего своей простотой VBA, философия VSTO предусматривала гораздо более высокий уровень квалификации.
Таким образом, первую версию VSTO вполне можно считать «пробным шаром» Microsoft, получившим высокую оценку квалифицированных разработчиков, но не снискавшим популярности в широких кругах офисных программистов и поставщиков корпоративных решений.
VSTO 2005: проще, нагляднее, лучше
Одновременно с Visual Studio 2005 появилась вторая существенно обновленная редакция VSTO, получившая название VSTO 2005. В целом следует отметить, что основные усовершенствования были направлены на повышение наглядности процесса программирования, что сделало его проще и доступнее даже для начинающих программистов.
Существует два типа VSTO-решений – уровня документов и уровня приложений. Первые разрабатываются и распространяются вместе с документами или шаблонами – в VSTO 2005 они доступны для Word и Excel, вторые представляют собой расширения (add-ins) функциональности и могут быть созданы только для Outlook. В любом случае поддерживаются только Microsoft Office 2003 и последующие версии, но не предыдущие.
Решения для офисных приложений в VSTO 2005 создаются в полностью визуальном режиме – Word или Excel загружаются непосредственно в среду разработки Visual Studio |
Удобство использования панели задач проявляется в том, что формирование интерфейса пользователя в таком случае не отличается от построения обычных WinForms-форм. Единственное, что при этом следует принимать во внимание – ограниченные размеры панели, которая отображается как часть окна родительского приложения и при этом занимает существенно меньшую площадь, чем рабочая область.
Также VSTO позволяет создавать смарт-теги, удобные в том случае, когда при работе над документами нужно выполнять какие-то контекстно зависимые действия.
Весьма важным нововведением VSTO 2005 является возможность генерирования и манипулирования содержимым офисных документов на сервере без необходимости предварительной установки пакета Microsoft Office (избегать чего настоятельно рекомендует сама Microsoft). Раньше для обеспечения максимальной безопасности разработчикам приходилось обращаться к сторонним компонентам либо промежуточным форматам. Появившаяся в Microsoft Office 2003 поддержка XML стала существенным шагом вперед, однако из-за отсутствия обратной совместимости и ряда других проблем она также не нашла широкого применения. Теперь же компоненты VSTO манипулируют документами, используя такой же базовый программный код, что и соответствующие офисные приложения.
Распространение приложений в VSTO 2005
К сожалению, рассмотренные достоинства VSTO в определенной мере омрачаются одним досадным недостатком – сложностью развертывания готовых решений. Нынешний релиз VSTO требует от разработчика значительных усилий по обеспечению правильного распространения программ на клиентские машины. Впрочем, в немалой степени это вызвано довольно строгой моделью безопасности, изначально призванной исключить проблемы с вирусами и другим вредоносным кодом, свойственные, скажем, VBA.
Хотя на текущий момент нет доступной для тестирования версии VSTO для Office 12, с некоторыми ограничениями вполне можно применять и VSTO 2005 |
Конечно, все эти действия можно попытаться реализовать в процессе установки. Однако для конечных пользователей необходимость инсталляции документа выглядит далеко не очевидной процедурой, требующей к тому же полномочия администратора компьютера. В корпоративной среде на помощь может прийти технология ClickOnce, позволяющая опубликовать решение на общем ресурсе и организовать его автоматическое обновление, однако обеспечение пререквизитов и прав доступа все равно связано с дополнительными усилиями.
Вполне предсказуемо, что третья версия VSTO, ориентированная уже на Office 12, продолжит курс на упрощение создания приложений и всемерное использование возможностей популярного офисного пакета в бизнес-среде. К сожалению, на текущий момент Microsoft не распространяет тестовых версий VSTO 3, хотя ранний альфа-релиз был продемонстрирован еще на конференции PDC 2005 в сентябре прошлого года. Однако это вовсе не означает, что в настоящее время разработчики не могут создавать приложения для Office 12 – с этой задачей справляется и VSTO 2005, хотя и не позволяет использовать все нововведения. Необходимость обеспечения обратной совместимости была одним из главных ориентиров при разработке очередной версии Microsoft Office – такой подход защищает инвестиции и прибавляет уверенности программистам, избравшим данную технологию.
Тем не менее наиболее принципиальные моменты VSTO 3 известны уже сегодня.
Так, будет обеспечена возможность создания расширений (add-ins) для всех приложений офисного пакета (а не только Outlook, как это было в VSTO 2005). Панели задач станут поддерживаться на уровне не только отдельных документов, но и самого приложения, что, безусловно, позволит реализовать более универсальные решения. Полностью будут задействованы все специфические функции Office 12, среди которых особенно важны XML-формат и новый пользовательский интерфейс.
Прямой доступ к внутренней структуре документа посредством XML предоставляет разработчикам широчайшие возможности по генерированию и форматированию документов, а также извлечению из них необходимых данных. Таким образом открываются совершенно новые перспективы для построения систем автоматизированной обработки информации.
Использование смарт-тегов в VSTO позволяет создавать контекстно зависимые команды |
Нельзя недооценивать и возможности адаптации Office 12. Ведь, к примеру, контекстно зависимые ленты (основа интерфейса нового пакета) способны в нужный момент акцентировать внимание пользователя только на актуальных инструментах, тем самым упрощая взаимодействие с серверными компонентами или корпоративными системами.
Вообще VSTO 3 будет поддерживать серверные технологии в той же мере, как и сам Office 12. Тем более что и SharePoint Services, и Groove изначально ориентированы на программное расширение функциональности за счет, скажем, новых workflow-моделей, поддерживаемых технологией WWF.
Задачи, решаемые с помощью VSTO
Используя VSTO, можно строить различные решения, начиная с дополнений для приложений Microsoft Office, спектр которых по мере роста популярности XML-форматов наверняка расширится. Но, пожалуй, самая логичная и привлекательная сфера его применения – корпоративная среда с большим количеством задач по вводу и обработке информации.
Как правило, сотрудники современных компаний применяют в своей практике целый ряд приложений, слабо интегрированных между собой. Очень часто в этом наборе пакет Microsoft Office играет весьма заметную роль, но его использование обычно ограничивается стандартными операциями по вводу первичной информации и подготовке отчетности. Учет специфики бизнес-процессов и взаимодействие с корпоративными системами реализуется главным образом либо заказным ПО, либо посредством Web-интерфейса, что в любом случае подразумевает дополнительные операции.
Теперь, благодаря VSTO, ничто не мешает разработчикам обеспечить интерфейс к корпоративным системам непосредственно в привычных офисных приложениях, что в конечном итоге позволит повысить производительность труда пользователей. Следует отметить, что такие решения сулят значительные преимущества перед популярными в настоящее время «тонкими» клиентами, основанными на применении браузеров, поскольку предлагают более удобный интерфейс и значительное число вспомогательных инструментов. В определенном смысле данный подход объединяет в себе достоинства как «тонких», так и «толстых» клиентов и прекрасно укладывается в современную концепцию «умных» клиентов (smart clients), продвигаемую Microsoft.
Таким образом, часто встречающиеся в корпоративной сфере задачи, вроде заполнения бланков, подготовки отчетности, приема и регистрации заказов, ведения информации о клиентах, отслеживания выполнения условий контрактов, требовавшие ранее совместного использования офисных приложений и специального корпоративного ПО, с применением VSTO могут быть решены гораздо элегантнее.
Заключение
Еще одно заметное преимущество – легкость интеграции сторонних разработок с продуктами самой Microsoft, что особенно хорошо заметно на примере Microsoft Office. На наш взгляд, именно VSTO (вместе с некоторыми новациями Office 12) позволит офисному пакету окончательно завоевать признание в корпоративном секторе, где очень важно уменьшить количество клиентских приложений и сократить время, затрачиваемое на обучение персонала.
Читайте также: