Visual studio как подключить excel
И тогда на помощь приходит т.н. "позднее связывание", когда не нужно никаких сопутствующих сборок.
Запуск и завершение работы Excel.
Запуск Excel и его корректное завершение – это самая первая задача, которую нужно решить программисту, если он собрался использовать Excel в своем приложении. Возможно, Excel уже запущен, и операция запуска уже не нужна, достаточно получить ссылку на Excel и начать работу с ним. В получении ссылки на уже работающую копию Excel кроется один неприятный момент, связанный с ошибкой в самом приложении Excel (которая, вроде бы, исправлена в MSOffice 2003)[2]. Эта ситуация подробно описана в конце этого раздела.
А теперь по порядку. В первую очередь нужно подключить к приложению два пространства имен:
В этих пространствах имен описаны типы, необходимые для организации позднего связывания. Один из них – класс Marshal, который предоставляет богатые возможности для организации взаимодействия между managed и unmanaged-объектами.
Для получения ссылки на процесс Excel нужно знать GUID Excel. Однако можно поступить намного проще - использовать программный идентификатор Excel: "Excel.Application" .
Для получения ссылки на работающий Excel можно воспользоваться статическим методом GetActiveObject() класса Marshal:
Для запуска Excel необходимо воспользоваться классом Activator, описанным в пространстве имен System.
После получения ссылки или же запуска становится доступна вся объектная модель Excel. С точки зрения программиста она выглядит так:
Рисунок 1. Объектная модель Excel.
Для работы вместе с объектом Excel необходимо получить ссылку на его коллекцию книг. С ее помощью можно получить доступ к любой книге. У каждой книги есть коллекция страниц, ссылку на которую также нужно получить для доступа к конкретной странице. Хочу сразу заметить, что доступ к книгам и к страницам можно получить как по их имени, так и по их порядковому номеру.
ПРИМЕЧАНИЕ
Чтобы корректно завершить работу с приложением Excel, для всех объектов, которые полученных с помощью позднего связывания, необходимо применить метод ReleaseComObject класса Marshal:
Но, тем не менее, если ваша программа получает ссылки на какие-либо объекты Excel, вы обязательно должны вызвать для них ReleaseComObject() класса Marshal.
А перед завершением работы с Excel обязательно произведите очистку памяти:
Управление книгами и страницами.
Позднее связывание подразумевает, что тип объекта, с которым планируется работать, неизвестен, а это значит, что нельзя непосредственно обращаться к его методам и полям, используя оператор ".". Поэтому для вызова метода необходимо знать его название и список формальных параметров, которые он принимает. Для вызова метода в классе Type предусмотрен метод InvokeMember(). Поэтому достаточно получить ссылку на экземпляр класса Type, описывающий тип объекта, с которым устанавливается позднее связывание, и вызвать метод InvokeMember(). Я не буду останавливаться подробно на этом методе, он достаточно хорошо описан в технической документации. Отмечу только самое необходимое.
Метод InvokeMember() перегружен, и имеет три модификации.
Здесь будет использоваться только первая модификация метода. В качестве первого параметра метод получает строковое название метода (поля, свойства) того объекта, с которым устанавливается связь. При этом в названии не должно быть пробелов или лишних символов, кроме того, этот параметр чувствителен к регистру.
Второй параметр принимает на вход флаги, характеризующие связывание. В данном случае понадобятся только следующие флаги:
- BindingFlags.InvokeMethod – найти метод, определить его точку входа, и выполнить, передав ему массив фактических параметров.
- BindingFlags.GetProperty – установить свойство
- BindingFlags.SetProperty – получить значение свойства.
Третий параметр – binder – устанавливается в null.
Через четвертый параметр – target – передается ссылка на объект, к методу которого нужно обратиться.
Пятый параметр – args – это массив с параметрами, который принимает на вход вызываемый поздним связыванием метод или массив, который содержит один элемент – устанавливаемое значение свойства.
Метод InvokeMember() возвращает результат выполнения метода или значение свойства.
Для управления книгами и страницами в первую очередь нужно получить ссылку на их коллекции. Для получения ссылки на коллекцию книг необходимо выполнить следующий код (считается, что ссылка на excel успешно получена):
Объект workbooks и есть managed-ссылка на коллекцию книг.
Для получения доступа к конкретной книге выполняется следующий код, использующий коллекцию книг:
Если книги с указанным названием не существует, генерируется исключение.
Чтобы открыть, закрыть или создать книгу, воспользуемся соответствующими методами коллекции книг workbooks, ссылка на которую уже успешно получена.
Для создания новой книги у коллекции workbooks есть несколько модификаций метода Add. Если вызвать этот метод без параметров, будет создана новая книга с именем по умолчанию, содержащая количество страниц, также принятое по умолчанию.
Для создания книги на основе шаблона достаточно передать полное имя файла, содержащего этот шаблон:
Для открытия файла с книгой используется метод Open объекта workbooks:
Закрытие книги возможно с помощью метода Close объекта workbook. При этом он принимает несколько необязательных параметров. Рассмотрим два варианта (обратите внимание, что мы вызываем метод Close книги, а не коллекции книг, и целевым объектом у нас выступает workbook, а не workbooks):
Нужно отметить, что сохранение произойдет только в том случае, если в рабочей книге произведены какие-либо изменения. Если создать рабочую книгу и попробовать ее сразу же закрыть, сохранив под другим именем – ничего не выйдет. Excel просто закроет книгу и все.
Чтобы просто сохранить изменения в книге, достаточно вызвать для нее метод Save или SaveAs, передав последнему в качестве параметра имя файла, под которым нужно сохранить книгу.
Для работы со страницами необходимо получить доступ к их коллекции. Естественно, к этому моменту необходимо иметь ссылку на рабочую книгу. Для получения ссылки на коллекцию страниц нужно вызвать свойство Worksheets рабочей книги:
Объект oWorksheets – это managed-ссылка на коллекцию страниц текущей книги. Зная ссылку на эту коллекцию, можно получить доступ к конкретной странице по ее имени или порядковому номеру (аналогично коллекции рабочих книг):
Работа со страницами. Объект Range. Использование записи макросов для автоматизации Excel.
Чтобы узнать, какие методы поддерживает объект Range, можно воспользоваться утилитой OleView, предназначенной специально для этого. Она поставляется с Visual Studio и лежит в [путь к Visual Studio]\Common7\Tools. Если вы не установили эту утилиту при инсталляции VS, ее можно найти в Интернет. Кроме того, можно, импортировав с помощью утилиты tlbimp.exe библиотеку типов Excel, открыть и изучить ее с помощью дизассемблера/декомпилятора (например, ildasm.exe, Reflector или Anakrino). Дизассемблер покажет объект Range и все его методы.
Но есть более простой способ, который позволит существенно сэкономить время. Это сам Excel, а точнее его запись макросов. Допустим, что нужно отформатировать ячейки определенным образом, например так, как показано на рисунке 2:
Рисунок 2. Результат работы макроса.
Для этого нужно открыть Excel, включить запись макросов и отформатировать указанные ячейки. Полученный макрос будет выглядеть следующим образом:
Как видно, здесь очень часто используется вызов метода Select у объекта Range. Но ведь с ячейками можно работать напрямую, минуя их выделение. Метод Select просто переопределяет ссылки, которые будут возвращаться объектом Selection. Объект Selection – это тот же самый Range. Таким образом, задача существенно упрощается. Нужно просто получить ссылки на соответствующие объекты Range, получить доступ к их внутренним объектам и произвести вызов соответствующих методов или свойств, используя метод InvokeMember().
Например, следующий участок кода окрашивает цвет фона ячейки B3 в оранжевый (причем заливка ячейки – сплошная), а цвет текста ячейки C3 устанавливает в красный:
Попробуем реализовать этот участок в приложении. Допустим, что мы успешно получили ссылки на нужную книгу и страницу.
Ссылка на страницу хранится в переменной worksheet.
Чтобы задать текст, можно использовать свойство Value объекта Range.
Перехват событий Excel
Перехват событий Excel позволяет отслеживать его состояние и контролировать некоторые действия. Например, можно отследить закрытие рабочей книги и корректно отключиться от Excel, произведя очистку памяти и прочие завершающие процедуры. Чтобы объяснить, как перехватывать события, проведу небольшой экскурс в события COM-объектов. В этом отступлении я предполагаю, что читатель немного знаком с архитектурой COM.
Если объект хочет получать события другого COM-объекта, то он должен уведомить об этом источник событий, зарегистрировав себя в списке объектов-получателей уведомлений о событиях. Для этого СОМ предоставляет интерфейс IConnectionPointContainer, содержащий метод FindConnectionPoint. С помощью вызова метода FindConnectionPoint объект-получатель события получает "точку подключения", интерфейс IConnectionPoint, и регистрирует c помощью метода Advise свою реализацию интерфейса IDispatch, методы которого будут вызываться при возникновении тех или иных событий. Excel определяет интерфейс, который должен реализовываться классом-приемником событий.
Для отключения от событий достаточно вызвать метод Unadvise(), и передать ему в качестве параметра идентификатор cookie, полученный при регистрации класса-приемника событий методом Advise:
Заключение.
В статье на примере работы с MS Excel рассматривалось взаимодействие COM и NET с использованием позднего связывания. Используя аналогичный подход, можно организовать управление любым COM-сервером.
В этом вводном пошаговом руководстве показано, как создавать надстройки уровня приложения для Microsoft Office Excel. Функции, создаваемые в подобном решении, доступны для приложения независимо от того, какие книги открыты.
Применимо к: сведения в этом разделе относятся к VSTO добавления - в проекты для Excel. дополнительные сведения см. в разделе функции, доступные по Office приложении и типу проекта.
Интересуетесь разработкой решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшой объем по сравнению с надстройками и решениями VSTO, и их можно создавать с помощью практически любой технологии веб-программирования, такой как HTML5, JavaScript, CSS3 и XML.
В этом пошаговом руководстве описаны следующие задачи:
Создание проекта надстройки VSTO Excel для Excel.
Написание кода с использованием объектной модели Excel, которая при сохранении книги добавляет в нее текст.
Построение и запуск проекта для тестирования.
Удаление завершенного проекта для прекращения автоматического запуска надстройки VSTO на компьютере разработчика.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Предварительные требования
Для выполнения этого пошагового руководства требуются следующие компоненты:
Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье Настройка компьютера для разработки решений Office.
Excel 2013 или Excel 2010.
Создание проекта
Создание проекта надстройки VSTO Excel в Visual Studio
Запустите среду Visual Studio.
В меню Файл укажите Создать, затем нажмите Проект.
В развернутом узле Office/SharePoint выберите узел Надстройки Office .
В списке шаблонов проектов выберите Надстройку Excel 2010 или Надстройку Excel 2013.
В поле Имя введите FirstExcelAddIn.
Нажмите OK.
Visual Studio создает проект проект firstexceladdin и открывает файл кода ThisAddIn в редакторе.
Написание кода для добавления текста в сохраненную книгу
Затем добавьте код в файл ThisAddIn. Новый код использует объектную модель Excel для вставки стандартного текста в первую строку активного листа. Активным является лист, открытый в момент сохранения книги пользователем. По умолчанию файл кода ThisAddIn содержит следующий созданный код:
Частичное определение класса ThisAddIn . Этот класс предоставляет точку входа для кода и обеспечивает доступ к объектной модели Excel. дополнительные сведения см. в статье надстройки программы VSTO. Оставшаяся часть ThisAddIn класса определяется в скрытом файле кода, который не следует изменять.
Обработчики событий ThisAddIn_Startup и ThisAddIn_Shutdown . Эти обработчики событий вызываются, когда Excel загружает и выгружает надстройку VSTO. Их можно использовать для инициализации надстройки VSTO в процессе ее загрузки, а также для освобождения используемых надбавкой ресурсов при ее выгрузке. дополнительные сведения см. в разделе события в Office проектах.
Добавление строки текста в сохраненную книгу
В файл кода ThisAddIn добавьте в класс ThisAddIn указанный ниже код. Новый код определяет обработчик событий для события WorkbookBeforeSave , которое возникает при сохранении книги.
Когда пользователь сохраняет книгу, обработчик событий добавляет новый текст в начало активного листа.
Для изменения книги при ее сохранении в приведенных выше примерах кода используются следующие объекты:
Поле Application класса ThisAddIn . Поле Application возвращает объект Application , который представляет текущий экземпляр Excel.
Параметр Wb обработчика событий для события WorkbookBeforeSave . Параметр Wb является объектом Workbook , который представляет сохраняемую книгу. дополнительные сведения см. в статье общие сведения об объектной модели Excel.
Тестирование проекта
Тестирование проекта
Нажмите клавишу F5 для построения и запуска проекта.
При построении проекта код компилируется в сборку, которая включается в выходную папку сборки для проекта. Visual Studio также создает ряд записей реестра, которые позволяют Excel обнаружить и загрузить надстройку VSTO, и настраивает параметры безопасности на компьютере разработчика, разрешая запуск надстройки VSTO. дополнительные сведения см. в разделе Build Office solutions.
Сохраните книгу в Excel.
Убедитесь, что в книгу добавляется указанный ниже текст.
Этот текст добавляется с помощью кода.
Очистить проект
Завершив разработку проекта, удалите с компьютера сборку надстройки VSTO, записи реестра и параметры безопасности. В противном случае надстройка VSTO будет запускаться при каждом открытии программы Excel на компьютере разработчика.
Очистка завершенного проекта на компьютере разработчика
- В Visual Studio в меню Построение выберите пункт Очистить решение.
Дальнейшие действия
Теперь, когда вы создали базовую надстройку VSTO для Excel, изучите более подробную информацию о разработке надстроек VSTO в следующих разделах.
общие задачи программирования, которые можно выполнять в VSTO надстроек: программы VSTO надстройки.
задачи программирования, характерные для Excel VSTO надстройки: Excel решения.
настройка пользовательского интерфейса Excel, например, путем добавления пользовательской вкладки на ленту или создания собственной настраиваемой области задач: Office настройки пользовательского интерфейса.
Использование Visual Studio для Excel Разработка расширений VSTO: инструкции и основные операции
Excel должен быть эффективным инструментом, который мы обычно используем в нашей повседневной работе. Если вы хотите расширить больше бизнес-функций Excel, вы можете разработать расширения VSTO для Excel в среде разработки VS. Интерфейс Excel, после добавления вкладок и элементов управления в функциональную область Office, выполняет некоторые необходимые нам бизнес-функции:
Новая надстройка Excel VSTO
Создайте новое приложение расширения Excel в VS. Если вы не найдете эту опцию, перейдите к установщику VS в красном поле и выберите вариант разработки Office (версия VS, которую я использую - 2015 и 2017)
ThisAddIn.cs является основной точкой входа в программу расширения VSTO, которая предоставляет нам множество событий обратного вызова для использования
Щелкните правой кнопкой мыши в решении нового проекта, чтобы создать функциональную область для проекта Excel, эта функциональная область является пользовательским интерфейсом внешней программы Excel VSTO.
Основные пространства имен и абстрактные типы
Узнайте о двух часто используемых библиотеках
При разработке VSTO часто используются две библиотеки:
Понимать абстрактные типы в разработке Excel
1、Application
В программе VSTO интерфейс приложения представляет все приложение Excel
2、WorkSheet
Объект WorkSheet является членом набора объектов WorkSheets и является абстракцией страницы листа в Excel.
3、Range
Объект Range - это абстракция каждой ячейки в Excel или выделенной области, содержащей один или несколько блоков ячеек (эта область может быть непрерывной или прерывистой) )
Вышеупомянутые три элемента - три наиболее часто используемых абстрактных интерфейса для Excel в VSTO
Основная операция
В проекте Excel, в файле ThisAddIn и других файлах проекта,Способ чтения и записи элементов Excel отличается:
- В файле ThisAddIn.cs получить доступ к элементам в Excel и получить прямой доступ к нему с помощью приложения
- Однако в файлах не-ThisAddIn .cs, таких как событие кнопки новой ленты, если вы хотите получить доступ к элементу Excel, вы должны добавить Globals.ThisAddIn впереди, чтобы получить к нему обычный доступ.
- При нормальных обстоятельствах бизнес-операции вообще не будут выполняться в основной программе, поэтому все основные примеры операций в будущем будут приведены в соответствии с методом доступа неосновной программы:
Расширенные элементы управления Excel
Microsoft предоставляет несколько полезных расширенных элементов управления для Excel, которые могут помочь Excel выполнить более расширенные функции, такие как:
- Добавить таблицу на лист и связать источник данных
- Добавить диаграмму на лист и связать источник данных
- Подождите, как показано ниже:
1. Используйте ObjectList, чтобы расширить элемент управления на таблицу Excel и связать источник данных
Все операции, описанные выше, являются операциями над каждым отдельным элементом в Excel, но если есть одинисточник данныхНеобходимо связать с рабочим листом в Excel, это роль ListObject. Элемент управления ListObject поддерживает простое и сложное связывание данных, самое простое, например: например, связывание источника данных DataTable в памяти
Вариант использования 1: привязка DataTable к ObjectList
Добавление ListObject в WorkSheet of Excel с использованием программирования VSTO аналогично добавлению таблицы в Excel. Операция в Excel заключается в следующем:
В современном мире разработки приложений нередко встает необходимость работы с Excel документами. Чаще всего это разного рода отчеты, но иногда xls/x файлы используются в качестве хранилища данных. Например, если пользователь должен иметь возможность загрузить данные в приложение или выгрузить, в человеко-читаемом виде, Excel де-факто является стандартом. Относительно дружелюбный интерфейс, прозрачная структура, в купе с его распространенностью. трудно навскидку назвать решение лучше.
Историческая справка
Времена, когда доминировал проприетарный формат .xls(Excel Binary File Format) давно прошли и сейчас мы имеем только .xlsx(Excel Workbook), в рамках Office Open XML. Последний представляет собой обычный .zip архив с XML файлами. Не будем углубляться в его структуру, я искренне надеюсь что вам это никогда не понадобится.
На github, и не только, можно найти ряд библиотек, бесплатных и не только. Пожалуй самой популярной является EPPlus. До определенной степени, она довольно хорошо отражает концепцию Excel, именно по этому я всегда использую EPPlus. Версия 4 полностью бесплатна, начиная с 5‐й версии вам потребуется приобрести лицензию для коммерческого использования.
Задача
Итак, предположим, продукт-мэнеджеру ударила в голову идея того, что возможность выгружать некий отчет в формате Excel увеличит кол-во пользователей на 100500%. Проджет-менеджер решает выкатить эту киллер-фичу как хотфикс прямо сегодня — ведь работы всего на пару часов.
Сам по себе, отчет содержит краткое описание компании и историю изменения некоторых экономических показателей. Для простоты все свойства компании — строки. Экономические показатели — большие целые числа и числа с плавающей точкой, а также даты. Предположим, что где-то в недрах микросервисного backend-да есть сервис-генератор подобных отчетов, например по id компании. Однако, поскольку id нет смысла выводить пользователю, идентификатор отсутствует в самой модели отчета.
Аналитик, в свою очередь, выдает задачу с феноменально точным описанием - "Сгенерировать excel отчет на базе данных MarketReport". Что ж, для нашего примера, создадим заглушку — генератор фейковых данных:
Первый запуск
Подключим EPPlus версии 4.5.3.3 и создадим базовую обвязку для будущего генератора.
Сердцем генератора будет метод Generate. ExcelPackage это модель документа, через которую мы и будем осуществлять все взаимодействия с ним. Также имеется конструктор для передачи пути к файлу или потока.
В методе main создается генератор отчетов, а также генератор Excel файлов. Далее полученный файл просто записывается на диск.
При попытке запустить приложение, получаем exception: InvalidOperationException: The workbook must contain at least one worksheet
Все правильно, Excel документ не может существовать без страниц, должна быть хотя бы одна. Добавляем ее, все интуитивно понятно:
Запускаем снова и. вот оно! Теперь наше приложение генерирует документ и, хотя там еще ничего нет, он уже весит 2,5KB - значит мы работаем с Excel правильно и все идет как надо.
Вывод данных
Давайте выведем основную информацию по компании в шапку. Для доступа к конкретной ячейки объект Cells на странице пакета снабжен удобным индексатором. При этом, до конкретной ячейки можно достучаться как через номер строки и столбца, так и по привычному всем буквенно-числовому коду:
Полный код вывода шапки.
Для вывода исторических данных понадобится как минимум шапка таблицы и цикл по массиву History:
Предлагаю обратить внимание на метод LoadFromArrays, который заполняет диапазон ячеек рваным(зубчатым) массивом. Здесь мы можем видеть, что типизация теряется и передавая массив object мы ожидаем что EPPlus в конечном итоге использует ToString, чтобы записать переданное в ячейки.
Стилизация
Если вы прямо сейчас откроете документ, то вы возможно увидите не то, что хотелось бы отдать в продакшн в пятницу вечером.
Как это выглядит
Во-первых, шапка никак не выделяется, во-вторых таблица не имеет границ. выравнивание пляшет, даты отображаются магическими числами, а капитализация "уходит в какую-то математику" - как это прокомментировал аналитик.
Да, на все эти красивости у нас уйдет больше года кода, чем на сам вывод данных, и, в конечном тоге, получившаяся каша из логики вывода данных и разметки заставит некоторых усомниться в их компетентности. но, мы же backend разработчики, так давайте сверстаем Excel Sheet!
Размер ячеек
Из коробки у нас есть возможность сделать автофит а так же вручную выставить ширину в соответствии с нашей ситуацией. А ситуация у нас не самая хорошая — по задумке аналитика в шапке у ячеек должен быть автофит, а у ячеек таблицы — тоже автофит. Так в чем же подвох?
Если вы когда-нибудь до этого открывали Excel, то возможно знаете, что ширина ячеек не может отличаться в рамках столбца и автофит будет по самому широкому контенту ячейки. Однако, простые вещи бывает нетак то просто объяснить. Но если вы справитесь, то вот как это будет выглядеть в коде:
Формат данных
Как и большая часть стиля ячейки, он задается через одноименное свойство Style. Обратите внимание на вычисление 3-го аргумента индексатора. Это звоночек некачественного кода, но к этому мы вернемся в позже.
Выравнивание
Его можно задать как на ячейке, так и на диапазоне. На самом деле, для EPPlus, это одна и та же сущность — некий ExcelRange, описывающий диапазон ячеек, в том числе и со всего 1 ячейкой.
Стиль текста
Также легко задается, используя Style.Font, кстати, здесь, на 2-й строчке, мы впервые указываем диапазон так, как привыкли его видеть пользователи Excel:
Границы
Задаем стиль линии, а также ее толщину. К этому моменту от кол-ва магических чисел-параметров индексатора уже рябит в глазах, но мы уже на финишной прямой. не так ли?
График
"Ну что за отчет без графиков, верно, Карл?" - ловко подметит специалист по тестированию, и не важно, что этого не было в ТЗ а на часах уже половина 9-го.
Хотя график как сущность сам по себе сложнее таблиц и с графиками мы не работаем каждый день, EPPlus предоставляет довольно понятный API. Давайте добавим простейший график, отражающий рост капитализации:
Еще, может понадобиться защитить страницу от редактирования:
На этом все, репозиторий с рабочим приложением находится здесь.
Заключение
Во-первых, прежде всего, о том, что мы успешно справились с задачей, а именно, сгенерировали свой первый Excel отчет, поработали со стилями и даже решили пару попутных проблем.
Привожу фрагменты кода, которые искал когда-то сам для работы с 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 и списать получившийся код. Затем использовать его в своей программе.
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?
Читайте также: