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

Обновлено: 02.07.2024

В этом пошаговом руководстве показано, как открывается форма 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 формы в проект

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

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

Выберите проект WinFormInput в обозревателе решений.

В меню Проект выберите пункт Добавить форму Windows.

Дайте этой форме имя GetInputString.vb или GetInputString.cs, а затем нажмите кнопку Добавить.

Новая форма откроется в конструкторе.

Добавьте в форму TextBox и Button .

Выберите кнопку, найдите свойство Текст в окне Свойства и измените текст на ОК.

Затем добавьте в ThisWorkbook.vb или ThisWorkbook.cs код для сбора информации от пользователя.

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

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

Отображение формы и сбор информации

Щелкните правой кнопкой мыши файл ThisWorkbook.vb или ThisWorkbook.cs в обозревателе решений, а затем нажмите кнопку Просмотр кода.

В обработчике событий Open ThisWorkbook добавьте следующий код для объявления переменной формы GetInputString , а затем отобразите эту форму.

Создайте метод с именем WriteStringToCell , который записывает текст в именованный диапазон. Этот метод вызывается из формы, и ввод пользователя передается в элемент управления NamedRange , formInput , в ячейку A1.

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

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

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

Щелкните правой кнопкой мыши В GetInputString в обозревателе решений и выберите Конструктор представлений.

Дважды щелкните кнопку, чтобы открыть файл кода с добавленным обработчиком событий Click кнопки.

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

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

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

Нажмите клавишу F5 для запуска проекта.

Убедитесь, что форма Windows Forms появилась.

Введите Hello World в текстовом поле и нажмите кнопку ОК.

Дальнейшие действия

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

Использование элементов управления Windows Forms в книге Excel или документе Word. дополнительные сведения см. в разделе Windows Forms controls on Office documents overview.

изменение пользовательского интерфейса Microsoft Office приложения из настройки уровня документа или надстройки VSTO. дополнительные сведения см. в разделе Office настройка пользовательского интерфейса.

Первым шагом создания игры "Подбери пару!" является создание проекта и добавление таблицы в форму. Таблица помогает равномерно распределить значки по сетке 4x4. Можно также задать несколько свойств, чтобы улучшить внешний вид игрового поля.

Создание проекта и добавление таблицы в форму

В строке меню щелкните Файл > Создать > Проект.

Появится форма с именем Form1.cs или Form1.vb, в зависимости от выбранного языка программирования.

Рабочая нагрузка разработки классических приложений .NET в Visual Studio Installer

Дополнительные сведения см. в разделе Установка Visual Studio.

На начальном экране выберите Создать проект.

Просмотр окна "Создание проекта"

В поле поиска окна Создание проекта введите Windows Forms. Затем в списке Тип проекта выберите Рабочий стол.

Рабочая нагрузка .NET Core в Visual Studio Installer

Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку.

В окне Настроить новый проект введите MatchingGame в поле Имя проекта. Затем нажмите Создать.

Задание свойств формы

В окне Свойства задайте следующие значения свойств формы.

Измените свойство формы Text с Form1 на Matching Game. Этот текст отображается в верхней части окна игры.

Установите размер формы на 550 пикселей в ширину и 550 пикселей в высоту. Для этого установите для свойства Size значение 550, 550 или перетащите угол формы, чтобы требуемый размер отобразился в правом нижнем углу интегрированной среды разработки (IDE).

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

Перетащите элемент управления TableLayoutPanel из категории Контейнеры панели элементов, а затем установите для него следующие свойства.

Задайте для свойства BackColor значение CornflowerBlue. Для этого откройте диалоговое окно BackColor, щелкнув стрелку раскрывающегося списка рядом со свойством BackColor в окне Свойства. Затем перейдите на вкладку Веб в диалоговом окне BackColor, чтобы просмотреть список доступных имен цветов.

Цвета упорядочены не по алфавиту, и цвет CornflowerBlue находится в нижней части списка.

Задайте для свойства Dock значение Fill, нажав кнопку раскрывающегося списка рядом со свойством и щелкнув большую среднюю кнопку. Таблица будет растянута по всей форме.

Для свойства CellBorderStyle установите значение Inset. Между ячейками поля появятся видимые границы.

Нажмите треугольную кнопку в правом верхнем углу элемента управления TableLayoutPanel для отображения меню задач этой панели.

В меню задач дважды щелкните Добавить строку для добавления двух дополнительных строк, а затем дважды щелкните Добавить столбец для добавления двух дополнительных столбцов.

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

Теперь на панели макета таблицы должна быть видна сетка размером 4х4, состоящая из шестнадцати одинаковых по размеру квадратных ячеек. Эти строки и столбцы задают места, в которых позже появятся изображения значков.

Убедитесь, что TableLayoutPanel выбран в редакторе формы. На это будет указывать надпись tableLayoutPanel1 в верхней части окна Свойства. Если этот элемент управления не выбран, выберите элемент управления TableLayoutPanel в форме или в раскрывающемся списке в верхней части окна Свойства.

При выбранном элементе управления TableLayoutPanel откройте панель элементов и добавьте элемент управления Label (находится в категории Стандартные элементы управления) в левую верхнюю ячейку TableLayoutPanel. Теперь элемент управления Label должен быть выбран в интегрированной среде разработки. Задайте для него следующие свойства.

Убедитесь, что свойство BackColor имеет значение CornflowerBlue.

Задайте свойству AutoSize значение False.

Задайте для свойства Dock значение Fill.

Задайте для свойства TextAlign значение MiddleCenter, нажав кнопку раскрывающегося списка рядом со свойством, а затем щелкнув среднюю кнопку. Это необходимо, чтобы значок отображался в середине ячейки.

Выберите свойство Font. Должна появиться кнопка с многоточием (…).

Установите свойство Text равным букве с.

Теперь в левой верхней ячейке TableLayoutPanel должен располагаться черный квадрат на синем фоне, который выравнивается по центру.

Шрифт Webdings является шрифтом значков, который поставляется с операционной системой Windows. В вашей игре "Подбери пару!" игроку необходимо найти пары одинаковых значков, поэтому используйте этот шрифт для отображения значков. Вместо ввода буквы с в свойство Text попробуйте вводить разные буквы, чтобы увидеть, какие значки отображаются. Восклицательный знак соответствует пауку, прописная буква N — глазу, а запятая — перцу чили.

Выберите элемент управления Label и скопируйте его в следующую ячейку TableLayoutPanel. (Нажмите сочетание клавиш CTRL+C или в строке меню выберите Правка > Копировать.) Затем вставьте его. (Нажмите сочетание клавиш CTRL+V или в строке меню выберите Правка > Вставить.) Во второй ячейке элемента управления TableLayoutPanel появится копия первого элемента управления Label. Вставьте его снова, и в третьей ячейке появится еще один элемент управления Label. Продолжайте вставлять элементы управления Label, пока все ячейки не будут заполнены.

Если выполнить команду вставки слишком много раз, интегрированная среда разработки добавит новую строку в TableLayoutPanel, чтобы появилось место для добавления нового элемента управления Label. Можно выполнить откат. Чтобы удалить новую ячейку, нажмите сочетание клавиш CTRL+Z или в меню выберите Правка > Отменить.

Теперь ваша форма готова. Она будет выглядеть примерно так, как показано на рисунке ниже.

Исходная форма игры на сопоставление


Исходная форма игры "Подбери пару!"

Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.

данные можно отображать в DataGrid элементах управления Windows Forms в таблицах и столбцах, создавая объекты DataGridTableStyle и добавляя их к объекту GridTableStylesCollection , доступ к которому осуществляется через DataGrid свойство TableStyles элемента управления. Каждый стиль таблицы отображает содержимое любой таблицы данных, указанной в свойстве MappingName объекта DataGridTableStyle . По умолчанию в стиле таблицы, в котором не указаны стили столбцов, отображаются все столбцы в таблице данных. Можно ограничить список отображаемых столбцов таблицы, добавив объекты DataGridColumnStyle в объект GridColumnStylesCollection , доступ к которому осуществляется через свойство GridColumnStyles каждого объекта DataGridTableStyle .

Добавление таблицы и столбца в DataGrid программным способом

Чтобы отобразить данные в таблице, необходимо сначала привязать DataGrid элемент управления к набору данных. дополнительные сведения см. в разделе руководство. привязка Windows Forms элемента управления DataGrid к источнику данных.

При программном указании стилей столбцов всегда создавайте объекты DataGridColumnStyle и добавляйте их в объект GridColumnStylesCollection перед добавлением объектов DataGridTableStyle в объект GridTableStylesCollection . При добавлении пустого объекта DataGridTableStyle в коллекцию объекты DataGridColumnStyle создаются автоматически. Следовательно, при попытке добавить новые объекты DataGridColumnStyle с повторяющимися значениями MappingName в объект GridColumnStylesCollection будет создано исключение.

Объявите новый стиль таблицы и задайте его имя сопоставления.

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

Вызовите метод Add объекта GridColumnStylesCollection , чтобы добавить столбец в стиль таблицы.

Вызовите метод Add объекта GridTableStylesCollection , чтобы добавить стиль таблицы в сетку данных.

Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.

Наработки очень пригодились в работе для формирования отчетности.

Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.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 и смотрим код, который туда записался:

Vusial Basic (VBA)

Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 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?

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