Пошаговое руководство. Сбор данных с помощью Формы Windows
В этом пошаговом руководстве показано, как открывается форма Windows Forms из настройки уровня документа для Microsoft Office Excel, выполняется сбор сведений от пользователя и запись этих сведений в ячейку листа.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO. См. сведения о функциях, доступных по Приложение Office и типу проекта.
Хотя в этом пошаговом руководстве используется проект уровня документа для Excel, рассмотренная процедура также применима и к другим проектам Office.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
- Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье «Настройка компьютера для разработки решений Office».
- Excel 2013 или Excel 2010.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.
Создание нового проекта
Первым шагом является создание проекта книги Excel.
Создание проекта
- Создайте проект книги Excel с именем WinFormInputи выберите в мастере Создать новый документ . Дополнительные сведения см. в статье «Практическое руководство. Создание проектов Office в Visual Studio». Visual Studio открывает новую книгу Excel в конструкторе и добавляет проект WinFormInput в обозреватель решений.
Добавление элемента управления NamedRange на лист
Добавление именованного диапазона в Sheet1
- Выберите ячейку A1 в Sheet1 .
- В поле Имя введите formInput. Поле Имя находится слева от строки формул над столбцом A листа.
- Нажмите ВВОД. Элемент управления NamedRange добавляется в ячейку A1. Видимые изменения на листе отсутствуют, но значение formInput появляется в поле Имя (над листом слева) и в окне Свойства при выборе ячейки A1 .
Добавление формы Windows Form в проект
Создайте форму Windows Form, чтобы запрашивать сведения у пользователя.
Добавление формы Windows Forms
- Выберите проект WinFormInput в обозревателе решений.
- В меню Проект выберите пункт Добавить форму Windows.
- Дайте этой форме имя GetInputString.vb или GetInputString.cs, а затем нажмите кнопку Добавить. Новая форма откроется в конструкторе.
- Добавьте в форму TextBox и Button .
- Выберите кнопку, найдите свойство Текст в окне Свойства и измените текст на ОК. Затем добавьте в ThisWorkbook.vb или ThisWorkbook.cs код для сбора информации от пользователя.
Отображение формы Windows Form и сбор сведений
Создайте экземпляр формы Windows GetInputString и отобразите его, а затем запишите информацию от пользователя в ячейку листа.
Отображение формы и сбор информации
- Щелкните правой кнопкой мыши файл ThisWorkbook.vb или ThisWorkbook.cs в обозревателе решений, а затем нажмите кнопку Просмотр кода.
- В обработчике событий Open ThisWorkbook добавьте следующий код для объявления переменной формы GetInputString , а затем отобразите эту форму.
Примечание. В C# необходимо добавить обработчик событий, как показано в событии Startup ниже. Сведения о создании обработчиков событий см. в статье «Практическое руководство. Создание обработчиков событий в проектах Office».
private void ThisWorkbook_Startup(object sender, System.EventArgs e) < this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open); >private void ThisWorkbook_Open()
Private Sub ThisWorkbook_Open() Handles Me.Open Dim inputForm As New GetInputString() inputForm.ShowDialog() End Sub
public void WriteStringToCell(string formData)
Public Sub WriteStringToCell(ByVal formData As String) Globals.Sheet1.formInput.Value2 = formData End Sub
Далее добавьте в форму код для обработки события нажатия кнопки.
Отправка сведений на лист
Отправка информации в лист
- Щелкните правой кнопкой мыши В GetInputString в обозревателе решенийи выберите Конструктор представлений.
- Дважды щелкните кнопку, чтобы открыть файл кода с добавленным обработчиком событий Click кнопки.
- Добавьте код в обработчик событий для приема входных данных из текстового поля, передачи их в функцию WriteStringToCell , а затем закрытия формы.
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose();
Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose()
Тест
Теперь вы можете запустить проект. Появляется форма Windows Forms, и введенные данные отображаются в листе.
Проверка книги
- Нажмите клавишу F5 для запуска проекта.
- Убедитесь, что форма Windows Forms появилась.
- Введите Hello World в текстовом поле и нажмите кнопку ОК.
- Убедитесь, что сообщение Hello World появилось в ячейке A1 листа.
Следующие шаги
В этом пошаговом руководстве описываются основные принципы отображения формы Windows Forms и передачи данных в лист. Вам может потребоваться выполнить другие задачи, приведенные ниже.
- Использование элементов управления Windows Forms в книге Excel или документе Word. Дополнительные сведения см. в разделе «Элементы управления Windows Forms» в документах Office.
- Измените пользовательский интерфейс microsoft Приложение Office lication из настройки на уровне документа или надстройки VSTO. Дополнительные сведения см. в разделе «Настройка пользовательского интерфейса Office».
Связанный контент
- Разработка решений Office
- Написание кода в решениях Office
- Программные надстройки VSTO
- Настройки уровня документа программы
- Пошаговое руководство по Word
- Пошаговое руководство по Excel
Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.
Данные в элементе управления DataGrid в Windows Forms можно отобразить в таблицах и столбцах, создав объекты DataGridTableStyle и добавив их в объект GridTableStylesCollection, к которому осуществляется доступ через свойство TableStyles элемента управления DataGrid. Каждый стиль таблицы управляет отображением содержимого любой таблицы данных, указанной в свойстве MappingName объекта DataGridTableStyle. По умолчанию стиль таблицы без указания стилей столбцов будет отображать все столбцы в этой таблице данных. Столбцы из таблицы можно ограничить, добавив объекты DataGridColumnStyle в объект GridColumnStylesCollection, к которому осуществляется доступ через свойство GridColumnStyles каждого объекта DataGridTableStyle.
Добавление таблицы и столбца в DataGrid программным способом
- Чтобы отобразить данные в таблице, необходимо сначала привязать элемент управления DataGrid к набору данных. Дополнительные сведения см. в статье Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных.
Внимание При программном указании стилей столбцов всегда создавайте объекты DataGridColumnStyle и добавляйте их в объект GridColumnStylesCollection перед добавлением объектов DataGridTableStyle в объект GridTableStylesCollection. При добавлении пустого объекта DataGridTableStyle в коллекцию объекты DataGridColumnStyle создаются автоматически. Следовательно, при попытке добавить в объект GridColumnStylesCollection новые объекты DataGridColumnStyle с повторяющимися значениями MappingName будет создано исключение.
Dim ts1 As New DataGridTableStyle() ts1.MappingName = "Customers"
DataGridTableStyle ts1 = new DataGridTableStyle(); ts1.MappingName = "Customers";
DataGridTableStyle* ts1 = new DataGridTableStyle(); ts1->MappingName = S"Customers";
Dim myDataCol As New DataGridBoolColumn() myDataCol.HeaderText = "My New Column" myDataCol.MappingName = "Current"
DataGridBoolColumn myDataCol = new DataGridBoolColumn(); myDataCol.HeaderText = "My New Column"; myDataCol.MappingName = "Current";
DataGridBoolColumn^ myDataCol = gcnew DataGridBoolColumn(); myDataCol->HeaderText = "My New Column"; myDataCol->MappingName = "Current";
ts1.GridColumnStyles.Add(myDataCol)
ts1.GridColumnStyles.Add(myDataCol);
ts1->GridColumnStyles->Add(myDataCol);
DataGrid1.TableStyles.Add(ts1)
dataGrid1.TableStyles.Add(ts1);
dataGrid1->TableStyles->Add(ts1);
См. также
- Элемент управления DataGrid
- Практическое руководство. Удаление или скрытие столбцов элемента управления DataGridView в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как отобразить таблицу Excel в WinForm?
Рекомендую использовать сторонние библиотеки, поддерживающие формат xlsx. Использовать Interop не рекомендую (в основе его лежит медленный COM и требуется наличие MS Office).
Использовал библиотеку EPPlus. Она бесплатна для некоммерческого использования. Позволяет читать ячейки, а можно загрузить диапазон ячеек в DataTable.
Добавьте nuget пакет EPPlus в ваше приложение, а далее используйте вышеуказанные примеры кода для чтения Excel.
Использование элементов управления Windows Forms на листах Excel
Элементы управления Windows Forms можно добавлять в книги Microsoft Office Excel таким же образом, как и элементы управления в Windows Forms. Общие сведения о работе с элементами управления в документах см. в разделе «Элементы управления Windows Forms» в обзоре документов Office.
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Excel. Дополнительные сведения см. в разделе «Функции», доступные по Приложение Office ликации и типу проекта.
Рекомендации по управлению для Excel
Существует несколько рекомендаций, относящихся к Excel.
Сопоставление размера элемента управления с размером ячейки
Вы можете задать автоматическое изменение размера элемента управления при изменении размера его родительской ячейки. Дополнительные сведения см. в разделе «Практическое руководство. Изменение размера элементов управления в ячейках листа».
Добавление компонентов, совместно используемых всеми листами
Вы можете добавлять компоненты, которые будут совместно использоваться всеми листами, такие как DataSet, не в сами листы, а в конструктор книги. Такой компонент будет отображаться в области компонентов.
Формула для внедрения элементов управления
При выборе элемента управления в Excel вы увидите =EMBED(«WinForms.Control.Host»,»») в строке формул. Этот текст обязательный, его не следует удалять.
Связанный контент
- Практическое руководство. Изменение размера элементов управления в ячейках листа
- Практическое руководство. Скрытие элементов управления на листах при печати
- Пошаговое руководство. Отображение текста в текстовом поле на листе с помощью кнопки
- Пошаговое руководство. Обновление диаграммы на листе с помощью переключателей