Winforms таблица как в excel
Перейти к содержимому

Winforms таблица как в excel

  • автор:

Пошаговое руководство. Сбор данных с помощью Формы 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.

Создание проекта

  1. Создайте проект книги Excel с именем WinFormInputи выберите в мастере Создать новый документ . Дополнительные сведения см. в статье «Практическое руководство. Создание проектов Office в Visual Studio». Visual Studio открывает новую книгу Excel в конструкторе и добавляет проект WinFormInput в обозреватель решений.

Добавление элемента управления NamedRange на лист

Добавление именованного диапазона в Sheet1

  1. Выберите ячейку A1 в Sheet1 .
  2. В поле Имя введите formInput. Поле Имя находится слева от строки формул над столбцом A листа.
  3. Нажмите ВВОД. Элемент управления NamedRange добавляется в ячейку A1. Видимые изменения на листе отсутствуют, но значение formInput появляется в поле Имя (над листом слева) и в окне Свойства при выборе ячейки A1 .

Добавление формы Windows Form в проект

Создайте форму Windows Form, чтобы запрашивать сведения у пользователя.

Добавление формы Windows Forms

  1. Выберите проект WinFormInput в обозревателе решений.
  2. В меню Проект выберите пункт Добавить форму Windows.
  3. Дайте этой форме имя GetInputString.vb или GetInputString.cs, а затем нажмите кнопку Добавить. Новая форма откроется в конструкторе.
  4. Добавьте в форму TextBox и Button .
  5. Выберите кнопку, найдите свойство Текст в окне Свойства и измените текст на ОК. Затем добавьте в ThisWorkbook.vb или ThisWorkbook.cs код для сбора информации от пользователя.

Отображение формы Windows Form и сбор сведений

Создайте экземпляр формы Windows GetInputString и отобразите его, а затем запишите информацию от пользователя в ячейку листа.

Отображение формы и сбор информации
  1. Щелкните правой кнопкой мыши файл ThisWorkbook.vb или ThisWorkbook.cs в обозревателе решений, а затем нажмите кнопку Просмотр кода.
  2. В обработчике событий 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 

Далее добавьте в форму код для обработки события нажатия кнопки.

Отправка сведений на лист

Отправка информации в лист

  1. Щелкните правой кнопкой мыши В GetInputString в обозревателе решенийи выберите Конструктор представлений.
  2. Дважды щелкните кнопку, чтобы открыть файл кода с добавленным обработчиком событий Click кнопки.
  3. Добавьте код в обработчик событий для приема входных данных из текстового поля, передачи их в функцию WriteStringToCell , а затем закрытия формы.
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text); this.Dispose(); 
Globals.ThisWorkbook.WriteStringToCell(Me.TextBox1.Text) Me.Dispose() 

Тест

Теперь вы можете запустить проект. Появляется форма Windows Forms, и введенные данные отображаются в листе.

Проверка книги

  1. Нажмите клавишу F5 для запуска проекта.
  2. Убедитесь, что форма Windows Forms появилась.
  3. Введите Hello World в текстовом поле и нажмите кнопку ОК.
  4. Убедитесь, что сообщение 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 программным способом

  1. Чтобы отобразить данные в таблице, необходимо сначала привязать элемент управления 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»,»») в строке формул. Этот текст обязательный, его не следует удалять.

Связанный контент

  • Практическое руководство. Изменение размера элементов управления в ячейках листа
  • Практическое руководство. Скрытие элементов управления на листах при печати
  • Пошаговое руководство. Отображение текста в текстовом поле на листе с помощью кнопки
  • Пошаговое руководство. Обновление диаграммы на листе с помощью переключателей

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *