Microsoft office 2010 primary interop assemblies что это
Поддержка создания решений на основе Microsoft Office появилась в Visual Studio в 2003 году: первая версия Visual Studio Tools for Office поддерживала только Excel 2003 и Word 2003 и позволяла реализовывать расширения на уровне документов (document-level code behind), используя управляемый код.
В VSTO 2005 появилась поддержка InfoPath, а также возможность создания модулей расширения для Outlook. Помимо этого в VSTO 2005 была реализована поддержка создания панелей задач (ActionsPane) для ряда продуктов, входящих в семейство Microsoft Office 2003.
В VSTO 2005 Second Edition была добавлена поддержка Office 2007, включая возможность создания расширений для PowerPoint и Visio. Этот продукт был доступен для бесплатной загрузки для легальных пользователей Microsoft Visual Studio.
Как уже было отмечено, VSTO 3.0 входит в состав Visual Studio 2008 начиная с версии Professional и обеспечивает поддержку разработки модулей расширения на уровне документов и приложений как для Office 2003, так и для Office 2007. Обеспечены возможность создания Workflow для Microsoft SharePoint и развертывание по технологии ClickOnce.
Основные требования
Для того чтобы вы смогли создавать решения с помощью Visual Studio Tools for Office, на компьютере, используемом для разработки, должны быть установлены следующие компоненты:
Для установки Visual Studio Tools for Office на компьютере, где планируется разработка для Microsoft Office System 2007, необходимо выполнить следующие шаги:
Если вы планируете создавать и расширять SharePoint Workflow, необходимо установить Visual Studio Tools for Office на компьютере, операционная система которого поддерживает Microsoft Office SharePoint Server 2007 — Windows Server 2003 или Windows Server 2008. В результате будут установлены шаблоны проектов, которые позволят вам создавать расширения для SharePoint Workflow.
После того как все необходимые компоненты, продукты и средства разработки установлены, можно приступать к разработке решений на базе Microsoft Office. К основным возможностям, предоставляемым Visual Studio Tools for Office, относятся: создание дополнительных модулей, работа с документами Word и Excel, расширение интерфейсного элемента «лента», создание панелей задач, использование Word Content Controls, разработка расширения на основе Outlook Forms и создание расширений для SharePoint Workflow.
Создание дополнительных модулей
Дополнительные модули на уровне приложений (application-level add-ins) позволяют расширять функциональность ключевых приложений, входящих в состав Microsoft Office. Дополнительные модули доступны в приложении независимо от того, какой документ в нем открыт, — это отличает механизмы расширения на основе дополнительных модулей от механизмов расширения на основе шаблонов документов, которые мы рассмотрим ниже.
В Visual Studio Tools for Office входят средства для создания дополнительных модулей на основе новых шаблонов проектов для большинства приложений, входящих в семейства Microsoft Office 2003 и Microsoft Office 2007, — Excel 2003 и 2007, InfoPath 2007, Outlook 2003 и 2007, PowerPoint 2003 и 2007, Project 2003 и 2007, Visio 2003 и 2007, Word 2003 и 2007. Использование новой программной модели существенно упрощает создание дополнительных модулей, так как не требует применения COM-технологий.
Шаблоны, входящие в состав Visual Studio Tools for Office
Среди новинок для модулей расширений отметим возможность обеспечения доступа к объектам внутри ваших моделей расширений из других компонентов Microsoft Office — например из других модулей расширений или из кода на Visual Basic for Applications, включенного в состав документа. Таким образом, у разработчиков появляется возможность создания на уровне модулей расширения разделяемых сервисов, которые могут использоваться другими компонентами и сервисами.
Работа с документами Word и Excel
Создание расширений на уровне документов представляет собой способ добавления расширенной функциональности к тому или иному документу либо к электронной таблице. Поскольку расширения реализованы на уровне документов, они будут доступны только в тех документах или электронных таблицах, с которыми они ассоциированы.
В состав Visual Studio Tools for Office входит набор возможностей, упрощающих создание расширений на уровне документов для Word 2007 и Excel 2007. К таким возможностям относятся:
- создание расширений для документов и электронных таблиц в формате Office Open XML для Word 2007 и Excel 2007 или в двоичных форматах, поддерживаемых в Microsoft Office 2003 или более ранних версий;
- дизайн документов и шаблонов в Visual Studio и написание кода в среде разработчика;
- возможность добавления компонентов Windows Forms в документы и шаблоны;
- добавление компонентов-расширений (host-controls) для встроенных объектов Word и Excel, которые расширяют объектный модуль и обеспечивают возможность связи с данными.
Настройка и расширение «ленты»
Интерфейсный элемент «лента» (Ribbon) впервые появился в Microsoft Office 2007 и представляет собой объединение функциональных возможностей меню, списков, галерей и ряда других элементов. Лента поддерживает контекстное переключение, группировку задач и ряд других возможностей. В Microsoft Office 2007 поддерживаются программная настройка и расширение интерфейсного элемента «лента» для продуктов Microsoft Office Excel 2007, Microsoft Office Outlook 2007, Microsoft Office PowerPoint 2007 и Microsoft Office Word 2007.
Существует два способа настройки элемента «лента»: с помощью дизайнера Ribbon Designer, включенного в состав Visual Studio Tools for Office 2008, и через описание «ленты» на языке Ribbon XML.
Настройка элемента «лента» с помощью дизайнера поддерживает следующую функциональность:
- возможность добавления настраиваемой «ленты» к проекту Office с применением специального шаблона проекта — Ribbon (Visual Designer);
- визуальное создание новых вкладок с помощью дизайнера:
- перетаскивание компонентов на «ленту»,
- настройка расположения компонентов и их внешнего вида,
- добавление обработчиков событий двойным щелчком по компоненту «ленты»;
Дизайнер также может использоваться для добавления компонентов к меню, которые открываются при нажатии на кнопку Office (Microsoft Office Button).
Настройка «ленты» с применением языка Ribbon XML позволяет более детально контролировать «ленту» и ее элементы и выполнять ряд задач, не поддерживаемых в дизайнере Ribbon Designer. В Visual Studio Tools for Office 2008 работа с «лентой» на уровне Ribbon XML поддерживается на уровне специального шаблона — Ribbon (XML), помимо этого имеется возможность экспорта любой «ленты», созданной средствами дизайнера, в шаблон для редактирования «ленты» на уровне языка XML.
В Visual Studio Tools for Office 2008 реализована типизованная объектная модель, которая может использоваться для управления компонентами «ленты» в режиме выполнения приложения. Например, можно динамически добавлять элементы меню или управлять отображением отдельных компонентов в зависимости от контекста, в котором в данный момент находится приложение. Объектная модель состоит из трех ключевых элементов: класса Ribbon, событийной модели и классов, отвечающих за отдельные компоненты «ленты».
Класс Ribbon наследует от класса OfficeRibbon и представляет собой класс, код которого разделен в файлах кода, создаваемого разработчиком, и файла, генерируемого дизайнером «ленты». Событийная модель поддерживает три события: Load, возникающее при начальной загрузке расширений «ленты», LoadImage, используемое для кэширования графических изображений, применяемых в «ленте», и Close, которое возникает при завершении работы экземпляра «ленты».
В пространстве имен Microsoft.Office.Tools.Ribbon определены следующие классы, отвечающие за отдельные компоненты «ленты» (табл. 2).
Каждый класс отвечает за отдельный тип компонента «ленты» и свойства, которые позволяют динамически управлять отображением компонента и рядом других его параметров. Помимо свойств каждый компонент «ленты» поддерживает ряд событий — они перечислены в табл. 3.
Все рассмотренные выше классы, события и другие элементы поддержки «ленты» в Visual Studio Tools for Office 2008 реализованы в пространстве имен Microsoft.Office.Tools.Ribbon. Здесь содержатся классы приведенные в табл. 4.
Создание панелей задач
Создание панелей задач — это еще один способ настройки приложений Microsoft Office с помощью Visual Studio Tools for Office 2008. Панели задач представляют собой интерфейсный элемент, который обычно располагается справа от основного окна приложения Microsoft Office. Панели задач позволяют расширять функциональность офисных приложений и часто используются как механизм обеспечения интеграции между офисными приложениями и приложениями, автоматизирующими какие-либо бизнес-задачи.
Панели задач обычно создаются либо на уровне документов (в этом случае они называются Actions Panes), либо на уровне приложений — в таком случае их называют Custom Task Panes. В табл. 5 приведены основные рекомендации по использованию Actions Panes и Custom Task Panes.
Введение
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.Interop.Excel.dll, предназначенную для работы с Excel файлами, в свой проект.
1. Перейдите в окно Solution Explorer.
2. Найдите пункт References и нажмите на нём правую кнопку мыши.
3. В появившемся контекстном меню выберите пункт Add Reference.4. В окне Reference Manager выберите пункт Assemblies -> Extensions.
5. Найдите сборку Microsoft.Office.Interop.Excel, после чего выберите ее, установив рядом с ней галочку.6. Нажмите на кнопку с надписью «OK», чтобы добавить сборку в проект.
Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.
Наработки очень пригодились в работе для формирования отчетности.
Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.
Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.
Далее создаем псевдоним для работы с Excel:
using Excel = Microsoft.Office.Interop.Excel;
Расстановка рамок.
Расставляем рамки со всех сторон:
Цвет рамки можно установить так:
Выравнивания в диапазоне задаются так:
Формулы
Определим задачу: получить сумму диапазона ячеек A4:A10.
Для начала снова получим диапазон ячеек:
Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);
Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:
string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.
Выделение ячейки или диапазона ячеек
Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:
Авто ширина и авто высота
Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:
Получаем значения из ячеек
Чтобы получить значение из ячейки, используем такой код:
Добавляем лист в рабочую книгу
Чтобы добавить лист и дать ему заголовок, используем следующее:
Добавление разрыва страницы
Сохраняем документ
Как открыть существующий документ Excel
Комментарии
Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.
Далее заходим в редактор Visual Basic и смотрим код, который туда записался:
Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:
Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.
Чтобы выбрать лист, выполните sheetData.Select(Type.Missing); где sheetData это нужный лист.
Как прочитать данные из ячейки excel,и записать эти данные в sql server?
Добрый день.
Отправил на почту.Добрый день.
А мне можно тоже самое?)Вы можете записать макрос на изменение цвета в Visual Basic и списать получившийся код. Затем использовать его в своей программе.
Здравствуйте.
Можете подсказать, как «заставить» приложение работать с разными версиями MS Office? На машине разработчика стоит Office 2010, при запуске на машине с 2003-м — увы — ошибка.Microsoft.Office.Interop.Excel это довольно старый способ работать с Excel документами.
Что касается версии Office 2003, то он использует совсем другой драйвер.
Соответственно версия Microsoft.Office.Interop.Excel.dll нужна старая, плюс драйвер microsoft jet 4.0, который на новых системах (Win 8, 10) работает неправильно.
Единственное, что могу посоветовать, так это скачать Microsoft Office Compatibility Pack для Office 2003, чтобы научить его открывать xslx документы.
А в своей программе использовать не Interop.Excel, а библиотеку EPPlus. Она работает с excel документами, используя технологию OpenXml и не надо париться по поводу драйверов.
Код будет очень похож на Interop.Excel-ный.Очень полезная штука, спасибо за удобное представление информации на Вашем сайте!
Скажите пожалуйста, как прочитать данные из ячейки Excel и записать их в SQL Server?
Visual Studio 2015 не видит Microsoft.Office.Interop при работе с Microsoft Office 2016. Сборка Microsoft Office 16.0 Object Library подключена. С пространством имён Microsoft.Office.Core всё нормально, но Microsoft.Office.Interop не видит вообще.
В чём может быть причина?
1 ответ 1
Частичное решение проблемы
Пока проблему удалось разрешить, но, к сожалению, пока частично.
Вследствие пока невыясненных причин, в процессе установки необходимые сборки не попали в глобальный кэш (GAC). Поэтому, для Excel необходимую сборку нашёл в папке пакета и подключил оттуда. Расположение папки:
Там же можно найти сборку и для Access.
Сборку для Outlook нашёл здесь:
Как отличить нужные сборки от всех остальных?
(Информация скорее для тех, кто в будущем, возможно, будет читать этот ответ)
То есть, для Excel сборка будет называться:
UPDATE 08.01.2016 Окончательное решение проблемы
Разобравшись с функциональными возможностями программы 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.
Читайте также: