Microsoft Office Interop Excel, как подключиться в Visual Studio 2019

Обновлено: 21.11.2024

private void Form1_Load(отправитель объекта, EventArgs e)

В VB Net событие загрузки формы будет выглядеть следующим образом:

Private Sub Form1_Load(sender As Object, e As EventArgs) обрабатывает MyBase.Load

с помощью Excel = Microsoft.Office.Interop.Excel;

(Вы можете удалить все выделенные серым цветом.)

При этом создается пространство имен с именем Excel. Это избавит вас от необходимости все время писать Microsoft.Office.Interop.Excel в остальной части кода.

Пользователи Visual Basic Net, добавьте это в верхнюю часть окна кодирования:

(Вам не нужно создавать пространство имен Excel в VB.)

А это в VB Net:

Теперь загрузите следующий файл Excel:

Сохраните его где-нибудь на своем компьютере и запомните местоположение.

Кстати, если у вас возникли проблемы с открытием этого файла в следующем коде, вы можете создать электронную таблицу для себя в своей версии Excel. Создайте следующее:

>
catch (Ошибка исключения)

Перехватывать ошибку как исключение

Теперь в тестовой части добавьте имя файла и его расположение в код в виде строки:

string excelFile = "C://Users//Ken//Documents//SalesFigures.xlsx";

Dim excelFile As String = "C:\Users\Ken\Documents\SalesFigures.xlsx"

(Очевидно, измените путь к файлу, чтобы он указывал на вашу собственную электронную таблицу SalesFigures.)

Excel.Application excelApp = new Excel.Application();

А это в VB Net:

Затемнить excelApp As Excel.Application = New Excel.Application()

Excel.Workbook excelBook = excelApp.Workbooks.Open(excelFile);

Затемнить excelBook как Excel.Workbook = excelApp.Workbooks.Open(excelFile)

Лист Excel.Worksheet = excelBook.Sheets["Лист1"];

А это в VB Net:

Размер листа как Excel.Worksheet = excelBook.Sheets("Лист1")

Имя «Лист1» — это имя по умолчанию для листа в загруженном вами файле Excel. Вместо имени рабочего листа вы можете использовать номер:

Цифра 1 относится к первому листу книги. Однако если у вас есть более одного листа и вы изменили порядок, то первый лист больше не будет правильным. Поэтому лучше использовать имя, а не номер.

Excel.Range dataRange = лист.Range["B2", "M5"];

А это в VB Net:

Тусклый диапазон данных как Excel.Range = лист.Range("B2", "M5")

Первая ячейка в диапазоне — B2. После запятой введите конец диапазона, у нас M5.

Excel.Range empNames = лист.Range["A2", "A5"];

А вот и в VB Net:

Затемнить empNames как Excel.Range = sheet.Range("A2", "A5")

Это дает нам диапазон от A2 до A5, то есть имена всех сотрудников из электронной таблицы.

Давайте запустим код и посмотрим, что у нас получится. Добавьте в свой код окно сообщения (без точки с запятой в VB):

Запустите программу, и вы должны увидеть окно сообщения "Excel загружен".

(Если вы создали свою собственную электронную таблицу, вместо этого вы можете получить сообщение об ошибке, в зависимости от того, насколько устарела ваша версия Excel. К сожалению, служба Interop.Excel плохо работает со старыми электронными таблицами. Если это произойдет с вами , вам потребуется обновить версию Excel или просто использовать наш файл.)

Очистка

Существует проблема, когда вы создаете COM-объекты Excel, как мы только что сделали: они имеют тенденцию оставаться в памяти. Поэтому вам нужно освободить их, иначе это может вызвать проблемы.

А это в VB:

if (dataRange != null)

А это в VB:

Если dataRange IsNot Nothing, то

Marshall – это класс, предоставляющий набор методов для управления памятью. Один из них называется ReleaseComObject. В круглых скобках вы вводите имя объекта, который хотите освободить, в данном случае dataRange. Первая строка оператора of просто проверяет, не является ли объект нулевым (или ничем в VB).
Поскольку мы создаем пять COM-объектов, нам нужны еще четыре оператора if, мы можем освободить каждый объект. Добавьте еще четыре оператора if, чтобы освободить следующие COM-объекты:

Для последних двух вы можете закрыть книгу и выйти из Excel до строки Release (без точки с запятой в конце в VB):

Немного хлопотно добавлять все операторы if для освобождения COM-объектов. Но это нужно сделать!

А вот и версия VB Net:

На следующем уроке мы загрузим имена продавцов в поле со списком. Мы также можем передать данные диаграммы в массив.

Чтобы использовать функции приложения Microsoft Office из проекта Office, необходимо использовать основную сборку взаимодействия (PIA) для приложения. PIA позволяет управляемому коду взаимодействовать с объектной моделью приложения Microsoft Office на основе COM.

Заинтересованы в разработке решений, расширяющих возможности Office на различных платформах? Ознакомьтесь с новой моделью надстроек Office.Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любые технологии веб-программирования, такие как HTML5, JavaScript, CSS3 и XML.

При создании нового проекта Office Visual Studio добавляет ссылки на PIA, необходимые для сборки проекта. В некоторых сценариях может потребоваться добавить ссылки на другие PIA (например, вы можете использовать функцию Microsoft Office Word в проекте для Microsoft Office Excel).

В этой статье описываются следующие аспекты использования PIA Microsoft Office в проектах Office:

Дополнительную информацию об основных сборках взаимодействия см. в разделе Основные сборки взаимодействия.

Отдельные основные сборки взаимодействия для создания и запуска проектов

Visual Studio использует разные наборы PIA на компьютере разработчика. Эти различные наборы сборок находятся в следующих местах:

Папка в каталоге файлов программы

Этот набор сборок используется при написании кода и сборке проектов. Visual Studio устанавливает эти сборки автоматически.

Глобальный кеш сборки

Этот набор сборок используется во время некоторых задач разработки, например при запуске или отладке проектов. Visual Studio не устанавливает и не регистрирует эти сборки; вам нужно сделать это самостоятельно.

Основные сборки взаимодействия в каталоге программных файлов

В процессе установки Visual Studio PIA автоматически добавляются в место в файловой системе за пределами глобального кэша сборок. Когда вы создаете новый проект, Visual Studio автоматически добавляет в ваш проект ссылки на эти копии PIA. Visual Studio использует эти копии PIA вместо сборок в глобальном кэше сборок для разрешения ссылок на типы при разработке и сборке проекта.

Если в глобальном кэше сборок зарегистрированы разные версии PIA, вы можете столкнуться с рядом проблем при разработке. Добавленные копии PIA помогут вам избежать таких проблем.

Для Visual Studio 2017 и более поздних версий эти копии PIA устанавливаются в следующие общие папки на компьютере разработки:

%ProgramFiles%\Microsoft Visual Studio\Shared\Visual Studio Tools для Office\PIA\

(или %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\ в 64-разрядных операционных системах)

Для более старых версий Visual Studio эти PIA будут установлены в папку Инструменты Visual Studio для Office\PIA в папке %ProgramFiles% для этой версии Visual Studio. Например: %ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Visual Studio Tools for Office\PIA\

Основные сборки взаимодействия в глобальном кэше сборок

Для выполнения определенных задач разработки PIA должны быть установлены и зарегистрированы в глобальном кэше сборок на компьютере разработчика. Как правило, PIA устанавливаются автоматически при установке Office на компьютер разработки. Дополнительные сведения см. в разделе Настройка компьютера для разработки решений Office.

На компьютерах конечных пользователей не требуются PIA Office для запуска решений Office. Дополнительные сведения см. в статье Проектирование и создание решений Office.

Использование функций нескольких приложений Microsoft Office в одном проекте

Каждый шаблон проекта Office в Visual Studio предназначен для работы с одним приложением Microsoft Office. Чтобы использовать функции в нескольких приложениях Microsoft Office или использовать функции в приложении или компоненте, у которого нет проекта в Visual Studio, необходимо добавить ссылку на необходимые PIA.

В большинстве случаев следует добавлять ссылки на PIA, устанавливаемые Visual Studio, в каталог %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\. Эти версии сборок отображаются на вкладке Framework диалогового окна Reference Manager. Дополнительные сведения см. в разделе Как настроить таргетинг на приложения Office с помощью основных сборок взаимодействия.

Если вы установили и зарегистрировали PIA в глобальном кэше сборок, эти версии сборок появятся на вкладке COM диалогового окна Диспетчер ссылок. Избегайте добавления ссылок на эти версии сборок, так как при их использовании могут возникнуть некоторые проблемы разработки. Например, если вы зарегистрировали разные версии PIA в глобальном кэше сборок, ваш проект автоматически привяжется к последней зарегистрированной версии сборки, даже если вы укажете другую версию сборки на вкладке COM в диалоговое окно Диспетчер ссылок.

Некоторые сборки добавляются в проект автоматически при добавлении сборки, которая на них ссылается. Например, ссылки на сборки Office.dll и Microsoft.Vbe.Interop.dll добавляются автоматически при добавлении ссылки на сборки Word, Excel, Outlook, Microsoft Forms или Graph.

Основные сборки взаимодействия для приложений Microsoft Office

В следующей таблице перечислены основные сборки взаимодействия, доступные для Office 2016, Office 2013 и Office 2010.

Необходимые условия для работы с объектами взаимодействия

На момент написания этой статьи была выпущена Visual Studio 2022 RC 2. На вашем компьютере также должны быть установлены Microsoft Office Excel 2007 или Microsoft Office Word 2007 (или их более поздние версии).

Как создать новое консольное приложение в Visual Studio

В этом разделе мы рассмотрим, как мы можем создать новый проект консольного приложения в Visual Studio 2022. Предполагая, что Visual Studio 2022 установлена ​​в вашей системе, выполните шаги, указанные ниже, чтобы создать новый проект консольного приложения:

  • Нажмите "Далее".
  • На экране «Настройте новый проект» укажите имя проекта и место, где вы хотите его создать.
  • Прежде чем перейти к следующему экрану, можно дополнительно установить флажок "Поместить решение и проект в один каталог".

Установка пакетов NuGet

Установите следующие библиотеки из NuGet с помощью диспетчера пакетов NuGet или из консоли диспетчера пакетов NuGet:

В этом разделе мы рассмотрим, как работать с объектами Office Interop и использовать их для подключения к Microsoft Word и Excel и чтения/записи данных.

Вы должны добавить в свою программу следующие директивы using для работы с Word и Excel соответственно при использовании объектов взаимодействия Office:

Для начала создайте новый документ Excel с именем Test.xslx в качестве примера файла Excel, находящегося в корневом каталоге диска D:\>. Мы будем использовать этот файл в следующем примере.

Следующим шагом является создание экземпляра класса Workbook для доступа к книге в Excel. Вы можете создать экземпляр Workbook, используя следующий код:

Чтобы прочитать имя книги, вы можете использовать свойство Name экземпляра книги, как показано во фрагменте кода, приведенном ниже:

В следующем листинге кода показано, как можно отобразить значение первой ячейки первого рабочего листа документа Excel:

Вот полный список кодов для справки:

См. приведенный выше список кодов. Обратите внимание на блок finally метода DisplayExcelCellValue. Метод Quit вызывается для экземпляра приложения Excel, чтобы остановить приложение. Наконец, вызов Marshall.FinalReleaseComObject устанавливает счетчик ссылок экземпляра приложения Excel на 0.

При запуске этого кода будет создан новый документ Excel по указанному пути со следующим содержимым внутри:

Для работы с Microsoft Word необходимо создать экземпляр Microsoft.Office.Interop.Word.Application. Как и Excel, этот экземпляр будет использоваться для связи с документом Word.

Далее вы можете создать абзац и добавить в него текст, как показано в приведенном ниже фрагменте кода:

Затем вы можете сохранить документ Word, используя этот код:

Обратите внимание, как свойство Words экземпляра приложения Word использовалось для извлечения слов, содержащихся в документе.

  • Для этого требуется лицензия на Microsoft Office на каждом клиентском компьютере.
  • Для этого требуется, чтобы на всех клиентских компьютерах была установлена ​​одна и та же версия Microsoft Excel.
  • Он работает только в операционных системах Windows.
  • При использовании автоматизации Microsoft Excel загружается в фоновом режиме, используя много МБ и загружая большое количество файлов и библиотек DLL.
  • Приложения Microsoft Office (включая Excel) разрабатывались как приложения с пользовательским интерфейсом, поэтому API работает очень медленно. Создание одного листа с 200 стрками и 200 столбцами на нашем тестовом компьютере заняло 239,4 секунды.
  • Microsoft не рекомендует использовать Excel Automation (или любой другой Office Interop) на сервере, см. Рекомендации по автоматизации Office на стороне сервера.

Лучше, чем автоматизация Excel

Выше конкурентов

При сравнении и оценке различных продуктов для чтения XLSX, XLS, ODS, CSV и продуктов для создания отчетов HTML, PDF и XPS не забывайте о следующих соображениях:

Простое и честное лицензирование

Мы не взимаем плату за дополнительные серверные лицензии.Вы можете использовать наш компонент для неограниченного количества проектов (вам не нужно покупать дополнительные «ОЕМ-лицензии»), и мы не заставляем вас покупать пакеты подписки.

У нас очень простое лицензирование: каждый разработчик, работающий с нашим компонентом, должен иметь лицензию разработчика. Нам все равно, Windows это или веб-приложение, сколько серверов вы используете, или у вас есть только один клиент или миллионы клиентов.

Производительность

  • Автоматизации Microsoft Excel требуется 240 секунд для создания файла.
  • GemBox.Spreadsheet создает файл за 0,9 секунды (в 266 раз быстрее).

Здесь приведен пример производительности, поэтому вы можете самостоятельно провести тест и посмотреть, как наш компонент работает с требуемыми табличными данными.

Чистый и простой в использовании API

и три строчки в одном из конкурирующих продуктов:

Последнее вызывает затруднения и заставляет задуматься об ограничении уникальных стилей ячеек Excel. Другими словами, вам придется обратить внимание на то, чтобы не создавать снова тот же стиль ячеек на более сложном листе.

Переносимость

100% управляемый код

Протестируйте чтение файлов с помощью GemBox.Spreadsheet онлайн

В следующем примере загружается файл Excel, перебираются его ячейки и добавляется содержимое ячеек в StringBuilder.

Читайте также: