- Microsoft Forms и книги Excel
- Где хранится книга Excel?
- Хотите поделиться мнением о Microsoft Forms?
- См. также
- Автоматизация Microsoft Excel из Microsoft Visual C# .NET
- Сводка
- Дополнительные сведения
- Создание клиента автоматизации для Microsoft Excel
- Тестирование клиента автоматизации
- Ссылки
- Открыть файлы Excel
- Windows forms excel c
- Параграф 5. Вывод информации в ячейки Excel
- 5.1. Вывод без форматирования
- 5.2. Форматированный вывод
- 5.3. Вставка формул
- Параграф 6. Защита листа и книги документа Excel
- Параграф 7. Чтение информации из ячеек Excel
- Параграф 8. Рисуем таблички
- Параграф 9. Создание диаграмм
- 8.1. Пошаговое создание диаграмм
- 9.2. Использование метода ChartWizard для создания диаграмм
- Параграф 10. Обработка событий сервера Excel
- Параграф 11. Об особенности использования метода Activate в VS 2005/2008
- Параграф 12. Автозаполнение или работа с диапазонами
- Параграф 13. Некоторые возможности по управлению параметрами Excel
- Заключение. О богатстве возможностей
Microsoft Forms и книги Excel
Совет: Узнайте больше о Microsoft Forms или сразу приступите к работе и создайте опрос или тест. Хотите использовать более сложные элементы фирменной символики, типы вопросов и анализ данных? Попробуйте Dynamics 365 Customer Voice.
В Microsoft Forms вы можете легко просмотреть все данные ответа для формы или теста в Microsoft Excel. Книга Excel с данными ответа будет загружена на Рабочий стол или сохранена в OneDrive в зависимости от начальной точки формы или теста.
Где хранится книга Excel?
Смотря как. Что была начальной точкой при создании формы?
Если вы создали форму с формами в Интернете, каждый раз при нажатии кнопки Открыть в Excel (на вкладке ответы ) автономная книга будет загружена в классическое приложение Excel. Вы можете сохранить книгу в любом месте. Каждый раз, когда вы нажимайте кнопку Открыть в Excel, вы получите новую книгу, которая будет содержать последние данные.
Примечание: Любые изменения, такие как примечания, формулы и функции, внесенные в книгу, остаются только в этой книге.
Если вы создали форму в onedrive для бизнеса, каждый раз при нажатии кнопки Открыть в Excel (на вкладке ответы ) Excel в Интернете откроется с книгой, которая автоматически сохранена в OneDrive для бизнеса. Данные ответа (такие как примечания, формулы и функции) синхронизируются с книгой, и вы увидите последние обновления каждый раз, когда вы щелкните Открыть в Excel или снова откройте книгу.
Если вы создали форму в Excel Online, каждый раз при нажатии кнопки Открыть в Excel (на вкладке ответы ) Excel в Интернете откроется, если книга автоматически сохранена в OneDrive для бизнеса. Данные ответа (такие как примечания, формулы и функции) синхронизируются с книгой, и вы увидите последние обновления каждый раз, когда вы щелкните Открыть в Excel или снова откройте книгу.
Хотите поделиться мнением о Microsoft Forms?
Мы с удовольствием вас выслушаем! Посетите сайт User Voice для Microsoft Forms, чтобы поделиться идеями или проголосовать за чужие предложения.
См. также
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Автоматизация Microsoft Excel из Microsoft Visual C# .NET
Сводка
В этой статье показано, как создать клиент автоматизации для Microsoft Excel с помощью Microsoft Visual C# .NET.
Дополнительные сведения
Автоматизация это процесс, позволяющий приложениям, написанным на таких языках, как Visual C# .NET, управлять другими приложениями программным способом. Автоматизация в Excel позволяет выполнять такие действия, как создание новой книги, добавление данных в книгу или создание диаграмм. В Excel и других приложениях Microsoft Office практически все действия, которые можно выполнить вручную через пользовательский интерфейс, также можно выполнить программным путем с помощью автоматизации.
Excel предоставляет эту программную функцию через объектную модель. Объектная модель — это коллекция классов и методов, которая выступает в качестве аналога для логических компонентов Excel. Например, существует объект Application, объект Workbook и объект листа, каждая из которых содержит функциональные возможности этих частей Excel. Чтобы получить доступ к объектной модели из Visual C# .NET, можно установить ссылку проекта на библиотеку типов.
В этой статье показано, как задать соответствующую ссылку проекта на библиотеку типов Excel для Visual C# .NET и пример кода для автоматизации Excel.
Создание клиента автоматизации для Microsoft Excel
Запустите Microsoft Visual Studio .NET.
В меню Файл выберите команду Создать, а затем выберите Проект. Выберите приложение Windows из типов проектов Visual C#. По умолчанию создается форма Form1.
Добавьте ссылку на библиотеку объектов Microsoft Excel. Для этого выполните следующие действия:
- On the Project menu, click Add Reference.
- На вкладке COM перейдите в библиотеку объектов Microsoft Excel и нажмите кнопку Выбрать.
Note (Примечание ) В состав Microsoft Office 2003 входят основные сборки взаимодействия (PIA). Microsoft Office XP не включает PIA, но их можно скачать.
- Нажмите кнопку ОК в диалоговом окне Добавление ссылок, чтобы принять выбранные параметры. Если вам будет предложено создать программы-оболочки для выбранных библиотек, нажмите кнопку Да.
В меню Вид выберите пункт Панель элементов, чтобы отобразить панель элементов, а затем добавьте кнопку в форму Form1.
Дважды щелкните элемент Button1. Откроется окно кода для формы.
В окне код замените следующий код:
Прокрутите окно до верхней части окна кода. Добавьте следующую строку в конец списка директив using:
Тестирование клиента автоматизации
- Нажмите клавишу F5 для построения и запуска программы.
- Нажмите кнопку Button1 на форме. Программа запускает Excel и заполняет данные на новом листе.
- Когда вам будет предложено ввести квартальные данные продаж, нажмите кнопку Да. Диаграмма, которая связана с квартальными данными, добавляется на лист.
Ссылки
Для получения дополнительных сведений посетите веб-сайт Microsoft Developer Network (MSDN).
Открыть файлы Excel
Открыть Excel файлы в зависимости от выбора checkbox-ов
Добрый вечер нужно написать задачу которая открывает excel файлы в зависимости от выбора. Всего 3.
Собрать все xml файлы в один и открыть в excel
Добрый день! Подскажите , Собрать все xml файлы в один , и можно ли этот файл открыть в excel в.
Не могу открыть файлы Word, jpeg, pdf — файлы повреждены
Помогите, пожалуйста, по-глупости словила вирус. Теперь не открываются файлы Word, jpeg, pdf, пишет.
Можно ли открыть файл Excel 2000 в Excel 97?
Кажется, с Word такая фишка проходит.
Ну, открыть-то файл не проблема.
Если вы знаете путь и название Excel файла, то можно так (только напишите эту строку в самом вверху программы using System.Diagnostics;)
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Если у вас есть Excel файл, в котором есть лист с названием «Лист1» и на этом листе есть данные начиная с ячейки А1 и далее (предположим, что в 1-й строке идут названия столбцов (например, количество, цена и т.д.), то
— добавьте на форму Button1 и dataGriedView
— добавьте ссылку на библиотеку Microsoft Excel x.x Object Library (где вместо x.x будет версия Excel — 14.0 или 15.0)
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Открыть папку и выделить файл/открыть файл в Excel
Привет, как программно открыть папку и выделить файл ? также как заставить Excel открыть файл ? в.
Открыть файлы
Доброго времени суток. Без Вашей помощи я не справлюсь. Мне нужно сделать программу, которая может.
Открыть файлы
Здравствуйте! Помогите, пожалуйста. Нужно открыть файлы. Пересохраните в v5.11 которая будет.
Открыть файлы из chekedlistbox`a
Доброго времени суток. Вопрос. Есть chekedlistbox, в него через opendialogfile добавил несколько.
Windows forms excel c
Из таблицы видно, что для достижения требуемого вида числа необходимо будет после импорта текста изменить формат ячейки (числового формата в FieldInfo нет).
Для демонстрации некоторых возможностей функции, создадим в любом текстовом редакторе простой текстовый файл «a.txt», в котором столбцы разделены символом табуляции — Tab (Рис.3).
Рис.3 Текстовый файл для импорта
Выполним следующий код:
Результат выполнения фрагмента кода показан на Рис.4.
Рис.4. Импортированный текстовый файл
С этим примером можно поэкспериментировать, меняя системные установки и заданные в программе разделители и меняя формат ячеек с числовой информацией.
Параграф 5. Вывод информации в ячейки Excel
5.1. Вывод без форматирования
Для примеров данного параграфа будем использовать файл «C:\a.xls», созданный в предыдущем пункте.
Вывод информации может быть выполнен на конкретный лист рабочей книги Excel в конкретную ячейку, поэтому нам необходимо определить объекты лист, в коллекции листов и ячейку. В глобальной области определения переменных напишем:
Обратим внимание на разницу задания всех и рабочих листов книги.
Аналогичного определения для ячеек и ячейки мы задать не можем, так как отдельно данные объекты как самостоятельные в C# отсутствуют, а есть понятие области выделенных ячеек, которая может включать одну или более ячеек, с которыми можно выполнять действия. Поэтому для ячеек, с которыми выполняется действие, введем следующее определение:
Для выделения используется метод get_Range, который позволяет выделить группу ячеек через задание угловых ячеек диапазона, и есть возможность обратиться непосредственно к свойствам Rows и Cells — в любом случае выделенным будет диапазон ячеек.
Еще один способ определения выбранных ячеек — использование метода get_Offset(x,y) объекта Range, возвращающего объект Range, отстоящий от заданной ячейки на заданное количество строк и столбцов, считая от левого верхнего угла. Это позволяет работать с ячейками, позиция которых заданы относительно выбранной ячейки или группы ячеек.
Возможности объединения ячеек гораздо богаче — можно использовать объединения областей, группу областей, определение границ выделенных ячеек и.т.п., однако, для большинства практических задач вполне достаточно перечисленных выше методов.
Выделенные ячейки далее могут быть объединены и с ними действия могут выполняться как с одной ячейкой. Для этого используется метод Merge:
На данном этапе мы уже использовали основные объекты иерархической структуры объектов Excel. Следует также отметить и еще одну особенность группы свойств Excel.Application. Как только мы получили ссылку на конкретный объект (книгу, лист, группу ячеек, диаграмму) их можно сделать активными, применив к ним метод Activate(). С этого момента они доступны через соответствующие свойства ActiveWorkbook, ActiveSheet, ActiveChart, ActiveCell. Кроме того, при выполнении действий с конкретным объектом, он автоматически становится активным и, действия с ним могут далее выполняться с использованием перечисленных свойств.
Точно также можно использовать и свойство Excel.Application Selection. То есть, объект может быть определен как селектированный и, далее, для ссылки на объект использоваться свойство Selection.
В следующем примере объединяется группа ячеек в одну без ссылки на выделенный объект.
Хотя это и заманчиво, чтобы работать с текущим селективным выбором как средством изменения свойств и поведения объекта, но лучше, все-таки, избегать этого. Причина — селективный выбор может быть легко изменен и во время выполнения приложения, например, кликом мышки в пределах документа, что при большом объеме вывода на 100% приведет к ошибке.
Рассмотрим пример различных вариантов вывода в ячейки Excel, на различные страницы рабочей книги:
Рис.5. Результаты выполнения фрагмента кода
Результаты выполнения фрагмента кода показаны на Рис.5.
Заметим, что в C# требуется считывать и присваивать значения свойству Value2, а не Value объекта Range, так как свойство Value содержит параметр. C# не поддерживает свойства с параметрами (за исключением индексных свойств).
Если в приведенном выше примере для вывода на лист 1 выбрать не одну, а сразу несколько ячеек, то результат можно видеть на Рис.5.1. (фрагмент слева).
Однако, как и в приложении Excel, можно объединить ячейки программно, задать выравнивание и получить результат, как на Рис.5.1 (вторай слева фрагмент).
Рис. 5.1 Результаты выполнения примера c объединением ячеек
5.2. Форматированный вывод
При выводе информации часто бывает необходимо изменить формат ячейки, например, задать числовой формат, это можно сделать следующим образом:
Результат будет зависеть от системных установок Windows (Пуск|Настройка|Панель управления|Язык и стандарты) и, для данного примера, результат может быть как на Рис.5.1. (третий слева фрагмент).
Для формата даты и установки общего формата:
Результат выполнения Рис.5.1. (фрагмент справа).
И последнее — возврат к общему формату.
Приведенный ниже пример форматирования текста в ячейках добавлен в качестве ответа на вопрос, поступивший автору 20.01.2009г.
Попробуем выполнить форматирование, показанное на Рис.6.
Рис.6. Пример форматированного вывода
Макрос, реализующий данное форматирование, имеет вид:
Его перевод на C#, будет выглядеть примерно так:
5.3. Вставка формул
Параграф 6. Защита листа и книги документа Excel
Материал прислан Андреем Ковалевым и отредактирован автором.
Для защиты листа документа или книги Excel необходимо установить пароль. В качестве пароля используется любая переменная тира string.
Пароль задавать необязательно — string s=string.Emptu; однако, если не задать пароль, любой пользователь сможет снять защиту с листа и изменить защищенные элементы.
Второй параметр: true, означает защиту структуры (запрет перемещения, удаления, скрытия, показа или переименования, а также вставки новых листов).
Третий параметр: true, означает защиту окна (блокировка окна для восстановления размера и расположения при каждом открытии книги).
Соответственно для снятия защиты книги используем:
Функция Protect определена в Microsoft.Office.Interop.Excel.dll как:
Множество параметров функции, начиная со второго, означают:
DrawingObjects — защита фигур;
Contents — защита содержимого заблокированных ячеек;
Scenarios — защита скриптов;
userInterfaceOnly — защита пользовательского интерфейса, но не макросов. Если этот аргумент не указан, защита применяется как к макросам, так и к пользовательскому интерфейсу.
AllowFormattingCells — позволяет форматирование любой ячейки защищенного рабочего листа.
AllowFormattingRows — позволяет форматирование любой строки защищенного рабочего листа.
AllowFormattingColumns — позволяет форматирование любого столбца защищенного рабочего листа.
AllowInsertingColumns — позволяет вставку столбцов;
AllowInsertingRows — позволяет вставку строк;
AllowInsertingHyperlinks — позволяет вставку гиперссылок;
AllowDeletingColumns — позволяет удаление столбцов;
AllowDeletingRows — позволяет удаление строк;
AllowSorting — разрешает сортировку;
AllowFiltering — разрешает использовать автофильтры;
allowUsingPivotTables разрешает использование отчетов сводной таблицы.
Для снятия защиты используем:
Параграф 7. Чтение информации из ячеек Excel
Чтение информации из ячеек Excel во многом аналогично выводу (см. выше). На выбранном листе необходимо в выбранной книге выбрать одну ячейку или объединенную группу ячеек (метод get_Range или преобразование к Excel.Range)- после чего достаточно преобразовать значения в выделенных ячейках к нужному типу данных.
Создадим в Excel новую книгу, на первом листе запишем соответственно:
Сохраним документ с именем a1.xls в корне диска C.
Запишем и выполним следующий код:
Код не требует пояснений — в заглавии приложения после выполнения будет выведено:
Параграф 8. Рисуем таблички
Чтобы нарисовать табличку в Excel надо научиться рисовать рамки вокруг выбранной ячейки или объединенной группы ячеек.
Шаги рисования рамки будут следующие:
Выбрать ячейку или группу ячеек на листе документа.
Определяем цвет линий обводки. Цвет может быть выбран как один из 56 цветов цветовой палитры Excel и, поэтому, он задается через цветовой индекс (например, excelcells.Borders.ColorIndex=3; — красный)
Некоторые значения ColorIndex 1 — белый, 2 — черный, 3 — красный, 4 — зеленый, 6 — желтый, 41 — синий и т.д.
Выбрать стиль линии (Excel.XlLineStyle.xlContinuous). Стиль линии может быть одним из следующих: xlContinuous, xlDash, xlDashDot, xlDashDotot, xlDot, xlDouble, xlSlantDashDot, xlLineStyleNone.
Задать толщину линии (Excel.XlBorderWeight.lHairline). Толщина линии может быть одной из следующих: lHairline, xlMedium, xlThick, xlThin.
Можно рисовать линии по любой границе ячейки и не по границе ячейки, для чего необходима задать расположение линии — вместо excelcells.Borders задать excelcells.Borders[направление], где направление может быть одним из следующих: Excel.XlBordersIndex.xlDiagonalDown, Excel.XlBordersIndex.xlDiagonalxlDiagonalUp, Excel.XlBordersIndex.xlDiagonalUp, Excel.XlBordersIndex.xlEdgeBottom, Excel.XlBordersIndex.xlEdgeLeft, Excel.XlBordersIndex.xlEdgeRight, Excel.XlBordersIndex.xlEdgeTop, Excel.XlBordersIndex.xlInsideHorizontal, Excel.XlBordersIndex.xlInsideVertical.
Следующий пример демонстрирует выполнение обводки вокруг ячеек (Рис.7. слева), и, тем самым, при использовании для некоторой группы объединенных ячеек, показывает принцип рисования табличек.
Рис.7. Создание рамок вокруг ячеек и выполнение заливки
Добавим две строчки к коду предыдущего примера и можем выполнить заливку ячеек (Рис.7. справа).
Параграф 9. Создание диаграмм
Для того, чтобы создать диаграмму, она должна быть привязана к конкретным ячейкам с цифровой информацией, поэтому откроем наш файл C:\a.xls и нарисуем в нем табличку, показанную на Рис.8. (у кого есть время — может выполнить это программно — в предыдущих параграфах есть достаточно материала, чтобы сделать это).
Рис.8. Табличка для диаграммы
8.1. Пошаговое создание диаграмм
Приведенный ниже пример может показаться громоздким, и не всегда нужно будет пройти все шаги, которые требуются для создания диаграмм, и, конечно, всегда может потребоваться еще что-то в смысле дополнительных усовершенствований стилей, надписей и т.п. Однако в примере есть все, чтобы сразу, напрямую используя приведенные ниже коды, можно было использовать в приложении связанные с таблицами диаграммы. Путь создания тоже не бесспорный и ниже приведен еще один пример, как можно вставить диаграмму на лист Excel, но отличие обоих путей не существенны, а после того как диаграмма вставлена, путь ее изменения может быть только таким, как показано в этом примере.
Некоторые общие замечания по коду:
Все глобальные объявления для примера описаны в предыдущих параграфах, здесь мы только их напомним:
Пример оперирует с данными таблицы (Рис.8), в которой специально каждая цифра была размещена в двух ячейках. Это позволило показать способ удаления лишних и пустых серий линий диаграммы.
В примере сначала диаграмма размещается на отдельном листе, а затем переносится на лист, в котором размещена таблица для диаграммы — это позволит нам на практике использовать один и тот же код для различного размещения диаграмм.
Код испытан в решении, описанном в начале раздела. Как тип диаграммы можно задать один из предопределенных: xlArea, xlBar, xlColumn, xlLine, xlPie, xlRadar, xlXYScatter, xlCombination, xl3DArea, xl3DBar, xl3DColumn, xl3DLine, xl3DPie, xl3DSurface, xlDoughnut, xlDefaultAutoFormat.
Рис.9. Диаграммы на отдельном листе
Рис.10. Диаграммы на листе 1
Есть возможность поместить диаграмму сразу на выбранном листе. Но, в этом случае, нельзя использовать метод ActiveChart и, поэтому, предыдущий код незначительно изменится. В примере комментарии даны в строках, имеющих принципиальное отличие от кода предыдущего примера.
Код формирует туже диаграмму (Рис.10.), что и предыдущий пример.
9.2. Использование метода ChartWizard для создания диаграмм
Метод свойства Chart объекта типа ChartsObject имеет достаточно много параметров, большинство из которых, как всегда, могут не указываться (Type.Missing), однако чем больше их будет указано — тем меньше далее потребуется писать кода, аналогичного коду предыдущего примера. Поэтому рассмотрим параметры метода:
Немного изменим код предыдущего примера для построения диаграммы с использованием ChartWizard.
Рис.11. Диаграмма, построенная с использованием ChartWizard
Код может показаться проще, но как видно из Рис.11., метод реализует далеко не все возможности и вновь придется вернуться к методам, которые мы использовали выше.
Параграф 10. Обработка событий сервера Excel
События также необходимы для создания функционального приложения для работы с Excel как и доступ к свойствам и методам. Если рассматривать использование свойств и методов, предоставляемых интерфейсом COM объекта, как прямую связь по управлению сервером, то события обеспечивают обратную связь. Благодаря наличию событий, приложение может обеспечить программную функциональность для отклика на происходящее в приложении.
Объекты Excel, также как и любой контрол C#, имеют свои события и программист, как и для контрола, может создать обработчик для любого из событий. Однако, у нас нет визуального компонента Excel и нельзя двойным кликом мышки в окошечке напротив события в окне Properties на вкладке Events создать обработчик. Можно попробовать сделать это вручную. Вспомним, как мы это делали, например, в параграфе «Присоединение меню для формы» в первом разделе. Но, при этом, возникает вопрос — где взять передаваемые в приложения параметры событий?
И сами события, и параметры есть в проекте решения, а изложенное ниже — методика создания обработчика событий для серверов автоматизации.
Для создания обработчика событий необходимо:
1. Уяснить на какое событие, и для какого объекта мы хотим получить отклик (хотим отреагировать).
Основные события объектов Excel:
a.) связанные с поведением объектов на листе
— SheetActivate (произошла активизация листа);
— SheetBeforeDoubleClick (выполнен двойной клик на листе и после этого события ожидается какая либо реакция сервера — выполнение обработчика по умолчанию);
— SheetBeforeRightClick (выполнен правый клик на листе и после этого события ожидается какая либо реакция сервера — выполнение обработчика по умолчанию);
— SheetCalculate (выполнен пересчет формул на листе);
— SheetChange (смена выбранной ячейки на листе); SheetDeactivate (лист потерял фокус); SheetFollowHyperlink (пользователь ушел по гиперссылке); SheetSelectionChange (изменилось выделение на листе).
b.) связанные с поведением окна
— WindowActivate (произошла активизация окна если Excel на данный момент был активен);
— WindowDeactivate (окно потеряло фокус);
— WindowResize (изменился размер окна);
c.) связанные с управлением рабочей книгой — NewWorkbook (создана новая рабочая книга);
— WorkbookActivate (книга, один из ее листов, получили фокус);
— WorkbookAddinInstall (выполняется инсталляция не установленного компонента);
— WorkbookAddinUninstall (выполняется деинсталляция установленного компонента);
— WorkbookBeforeClose (после этого события ожидается закрытие книги — выполнение обработчика по умолчанию);
— WorkbookBeforePrint (после этого события ожидается печать листа — выполнение обработчика по умолчанию);
— WorkbookBeforeSave (после этого события ожидается сохранение книги — выполнение обработчика по умолчанию);
— WorkbookDeactivate (книга потеряла фокус);
— WorkbookNewSheet (в книгу добавлен лист);
— WorkbookOpen (открыта рабочая книга).
a.) все события объекта Application для пункта a, связанные с поведением объектов на листе. Генерируются только для листов данной рабочей книги.
b.) все события объекта Application для пункта b. Генерируются только для листов данной рабочей книги.
c.) связанные с управлением рабочей книгой — Activate (книга, один из ее листов, получили фокус);
— BeforeClose (после этого события ожидается закрытие книги — выполнение обработчика по умолчанию);
— BeforePrint (после этого события ожидается печать листа — выполнение обработчика по умолчанию);
— BeforeSave (после этого события ожидается сохранение книги — выполнение обработчика по умолчанию);
— Deactivate (книга потеряла фокус);
— NewSheet (в книгу добавлен лист);
— Open (открыта рабочая книга).
a) связанные с поведением объектов на листе
— Activate (произошла активизация листа);
— BeforeDoubleClick (выполнен двойной клик на листе и после этого события ожидается какая либо реакция сервера — выполнение обработчика по умолчанию);
— BeforeRightClick (выполнен правый клик на листе и после этого события ожидается какая либо реакция сервера — выполнение обработчика по умолчанию);
— Calculate (выполнен пересчет формул на листе);
— Change (смена выбранной ячейки на листе); SheetDeactivate (лист потерял фокус); SheetFollowHyperlink (пользователь ушел по гиперссылке); SheetSelectionChange (изменилось выделение на листе).
2. Инициализируем объект, для которого необходимо создать обработчик, например:
3. Находим (поставив точку после excelappworkbook . ) в списке отображенных объектов, свойств, методов и событий требуемое событие и добавляем его к объекту, например:
4. Поставив к полученной в пункте 3 строки знак += к полученной в пункте 3 строки, копируем (нажатием Tab) высвеченную подсказку в строку кода и получим:
Обработчик события создан и добавлен к объекту. excelappworkbook_SheetActivate — это имя функции обратного вызова для нашего обработчика. Осталось записать код функции обработчика и определить параметры функции.
5. Определение параметров функции кода обработчика для выбранного события.
Для определения метода необходимо (Рис.12.) в окне Solutation Explorer открыть узел Reference и двойным кликом мышки по узлу Microsoft.Office.Interop.Excel вызвать окно Object Browser. В окне Object Browser открыть узлы Microsoft.Office.Interop.Excel, и в последней открытой закладке найти узел списка событий. Выбрав узел требуемого списка событий, кликаем по нему мышкой — в правой части окна появляется список доступных событий. Выбираем требуемое событие и кликаем по нему мышкой — внизу окна появляется функция метода. Копируем из нее параметры функции: new void SheetActivate ( Object Sh ).
PS: Еще проще, в контекстном меню делегата WorkbookEvents_SheetActivateEventHandler выбрать пункт Go To Difination и посмотреть параметры определенные в dll Microsoft.Office.Interop.Excel:
Рис.12. Определение параметров функции кода обработчика
Пишем код функции для события:
6. Осталось назначить имя делегату события и сделать его доступными извне (public). Для этого представим назначение обработчика события (п.4.)
Это все шаги, которые необходимо сделать для добавления событий.
Следующий пример показывает как, меняя лист в книге Excel или вводя информацию в ячейку (не важно, программно или вручную), мы выводим информацию об этом в приложение, а закрывая книгу — уничтожаем объект Excel.Application, что позволяет избежать зависших процессов Excel в Windows (по крайней мере после закрытия приложения все процессы уничтожаются):
Отметим, что в функции обработчиков событий Excel передаются не ссылки на конкретный объект типа Workbook, Worksheet, Chart, а переменная типа Object, которую перед использованием необходимо явно привести к требуемому типу.
Все события, в имени которых есть слово «Before», позволяют отменить обработку события по умолчанию. Параметр, передаваемый обработчику события, обычно именуется Cancel, а его значение по умолчанию — false. Если присвоить этому параметру True, Excel не выполняет обработку события по умолчанию.
Взаимодействие с серверами автоматизации выполняется аналогично выполнению фонового процесса и, поэтому, доступа к элементам, тем, которые представлены контролами или являются свойствами WindowsForm), из функций делегатов нет (хотя при выполнении, например textBox1.Text=»Перешли на лист = » + ((Excel.Worksheet)Sh).Name); прерывания не будет, но и отображения информации также не будет).
Параграф 11. Об особенности использования метода Activate в VS 2005/2008
Кто добросовестно повторял приведенные выше примеры, тот должен был заметить, что при компиляции приложения на строке
Эта двусмысленность в использовании одноименных свойства и метода объявленных в интерфейсе _Worksheet и интерфейсе DocEvents. Оба эти интерфейса наследует класс Worksheet. И, хотя использование метода Activate не приводит к двусмысленности в выполнении кода, для тех, кто привык писать «чистый код» этот «глюк» лучше устранить. Устранение можно выполнить через события Excel (см. предыдущий параграф).
Уберем из предыдущего кода в case 1: две строчки:
Вместо убранных строчек напишем вызов:
Функцию iMySheetActivate запишем следующим образом (как писать код для работы с событиями описано выше):
Делегат может быть и пустым:
Предупреждений компиляции не будет в коде предыдущего параграфа если мы изменим и обработчик нажатия кнопки 4:
Параграф 12. Автозаполнение или работа с диапазонами
Создадим файл 1.xls, в который предварительно запишем информацию, показанную на Рис.13.
Рис 13 Файл xls для автозаполнения
Выполним следующий код:
Результат выполнения кода показан на Рис.14.
Рис 14. Файл xls после автозаполнения
Параграф 13. Некоторые возможности по управлению параметрами Excel
Приведенный ниже код демонстрирует богатство возможностей по управлению параметрами Excel из приложения на C#. Приведенные примеры целесообразно испытывать раздельно (по возможностям) — каждая новая из нескольких приведенных здесь возможностей (их, реально, во много раз больше), начинаются в коде примера фразой «Можно . «.
Заключение. О богатстве возможностей
Богатства возможностей по управлению запущенным приложением потрясающе. Практически, все, что можно сделать в автономно запущенном приложении доступно и из приложения на C#. Каждый может достаточно легко выполнить то или иное действия из приложения, если создаст макрос для этого действия, а, затем, «переведет» код VBA в коды C#.
И, в тоже время, по мнению автора, для начального этапа практической работы по формированию документов из приложения, изложенного материала вполне достаточно. Но, несмотря на это, раздел будет пополняться по мере возникновения какой либо проблемы в практической работе и ее разрешении. Если у Вас есть интересные находки — присылайте — с указанием авторства они будут включены в данный материал.
Молчанов Владислав 1.11.2004г.
Адаптировано к VS 2005/2008 14.10.2007г.
Перепечатка материала без разрешения автора не допускается.