Как подключить excel к datagridview

Обновлено: 08.07.2024

Коды кнопок просмотра указаны ниже:

РЕДАКТИРОВАТЬ:

И снова здравствуйте,

Я впервые публикую что-то на Stackoverflow, поэтому извиняюсь за свои ошибки.

Я расскажу подробнее о проекте и об ошибке.

А вот и код формы.

Я попробовал образец @ JohnG, но когда я выбираю файл в проводнике файлов и нажимаю кнопку открытия, я получаю ту же ошибку.

Я не могу понять, что упустил .

1 ответ

Ваш вопрос несколько неясен . В заголовке указано, что вы хотите «отображать листы Excel в DataGridView» . и это, безусловно, выполнимо, однако я не вижу нигде в коде, который пытается установить DataGridView на один из листов Excel. Опубликованный код действительно успешно считывает выбранный файл Excel в DataSet. . Затем код добавляет каждое имя рабочего листа как элемент в поле со списком cboxSheet.

Кажется, все это работает. Итак, учитывая ваш вопрос, я предполагаю, что есть DataGridView на том же Form , который содержит ComboBox , заполненный опубликованным кодом. Я предполагаю, что вы хотите, чтобы пользователь мог выбрать конкретный рабочий лист из поля со списком, а затем отобразить этот рабочий лист в DataGridView. . Если это то, что вы хотите, то, к счастью, вы уже сделали большую часть тяжелой работы . т.е. создание DataSet , где каждый DataTable в DataSet является одним из рабочих листов из выбранного файла Excel.

Предполагая, что на Form есть DataGridView , код должен установить его DataSource после того, как код прочитает файл Excel. К счастью, код создает DataSet под названием result , который мы можем использовать как DataSource для сетки. Что-то вроде

Это установит DataSource сетки как DataSet. . Чтобы отобразить конкретный DataTable из DataSet , код должен установить для свойства сетки DataMember значение имя DataTable , которое мы хотим отобразить . и, к счастью, у нас есть все эти имена, которые удобно хранить в поле со списком.

Следовательно, после того, как код устанавливает DataSource сетки, мы также могли бы установить выбор поля со списком для первой таблицы в наборе данных, а затем установить DisplayMamber сетки для отображения выбранного рабочего листа в поясе… ИЛИ … Поскольку мы знаем, что хотим, чтобы сетка отображала другую таблицу, когда пользователь изменяет выбор в поле со списком, нам все равно придется «подключиться / подписаться» на событие ComboBoxes SelectedIndexChanged .

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

После подключения события SelectedIndexChanged со списком, ваш текущий код должен только добавить две строки, как показано ниже. Обратите внимание, что я удалил tableCollection , поскольку он не нужен.

Я надеюсь в этом есть смысл.

Редактировать согласно обновлениям OP и комментариям

DataGridViewэлемент управления поддерживает стандартную модель привязки данных Windows Forms, поэтому она может выполнять привязку к различным источникам данных. Как правило, привязка выполняется к элементу BindingSource , который управляет взаимодействием с источником данных. BindingSourceможет быть любым Windows Formsным источником данных, что обеспечивает большую гибкость при выборе или изменении расположения данных. Дополнительные сведения о том, какие источники данных DataGridView поддерживает элемент управления, см. в разделе Общие сведения об элементе управления DataGridView.

Visual Studio обладает расширенной поддержкой привязки данных к элементу управления DataGridView. дополнительные сведения см. в разделе инструкции. привязка данных к элементу управления Windows Forms DataGridView с помощью конструктора.

Подключение элемента управления DataGridView к данным:

Реализуйте метод для управления деталями извлечения данных. В следующем примере кода реализуется GetData метод, который инициализирует SqlDataAdapter и использует его для заполнения DataTable . Затем он привязывает DataTable к BindingSource .

В Load обработчике событий формы привяжите DataGridView элемент управления к BindingSource и вызовите GetData метод для получения данных.

Пример

этот полный пример кода извлекает данные из базы данных для заполнения элемента управления DataGridView в Windows форме. Форма также содержит кнопки для перезагрузки данных и отправки изменений в базу данных.

Для этого примера требуются:

Ссылки на систему, System. Windows. Формы, System. Data и сборки System.Xml.

заполните connectionString переменную в примере значениями для образца подключения к базе данных Northwind SQL Server. Windows Проверка подлинности, называемая также встроенной безопасностью, является более безопасным способом подключения к базе данных, чем сохранение пароля в строке подключения. Дополнительные сведения о безопасности подключения см. в разделе Защита сведений о подключении.

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Представляет объект DataGridView форм Windows Forms, который можно добавить в рабочий лист Microsoft Office Excel.

Комментарии

Microsoft.Office.Tools.Excel.Controls.DataGridViewОтличается от System.Windows.Forms.DataGridView . Microsoft.Office.Tools.Excel.Controls.DataGridViewИмеет дополнительные члены, которые позволяют добавлять его в лист Excel и предоставлять ему дополнительные методы и свойства.

Не используйте New конструктор для создания нового DataGridView . Используйте AddDataGridView метод, чтобы добавить новый объект DataGridView в лист.

Свойства

Возвращает объект Application, представляющий собой создателя DataGridView.

Возвращает объект Border, представляющий границу элемента управления DataGridView.

Возвращает или задает расстояние в точках между нижним краем элемента управления DataGridView и верхним краем рабочего листа.

Возвращает объект Range, представляющий ячейку, расположенную под нижним правым углом DataGridView.

Возвращает значение, указывающее на приложение, в котором был создан объект DataGridView.

Получает или задает высоту элемента управления DataGridView.

Возвращает номер индекса DataGridView внутри коллекции OLEObjects на листе.

Возвращает объект Interior, представленный внутри DataGridView.

Возвращает или задает расстояние в точках между левым краем DataGridView и левым краем рабочего листа.

Возвращает или задает значение определяющее который DataGridView может быть изменен во время разработки когда лист защищен.

Возвращает значение, представляющее тип OLE-объекта.

Получает родительский объект объекта DataGridView.

Возвращает или задает объект, указывающий способ присоединения объекта DataGridView к расположенным ниже ячейкам.

Возвращает или задает значение, указывающее, будет ли объект DataGridView выводиться на печать при печати рабочего листа.

Возвращает расстояние в пунктах между правым краем элемента управления DataGridView и левым краем рабочего листа.

Возвращает диапазон ShapeRange, представляющий объект DataGridView.

Получает или задает имя источника ссылки объекта DataGridView.

Возвращает или задает расстояние в точках между верхним краем DataGridView и верхним краем рабочего листа.

Возвращает объект Range, представляющий ячейку, расположенную под верхним левым углом объекта DataGridView.

Возвращает или задает значение, которое представляет видна ли DataGridView.

Возвращает или задает ширину элемента управления DataGridView в пунктах.

Возвращает позицию z-порядка объекта DataGridView.

Методы

Помещает объект DataGridView в начало z-порядка.

Копирует объект DataGridView в буфер обмена как рисунок.

Удаляет динамически созданный объект DataGridView из рабочего листа, а затем удаляет его из коллекции ControlCollection.

Конструктор можно использовать для подключения DataGridView элемента управления к источникам данных различных видов, включая базы данных, бизнес-объекты или веб-службы. При привязке элемента управления к источнику данных с помощью конструктора элемент управления автоматически привязывается к BindingSource компоненту, который представляет источник данных. Кроме того, в элементе управления автоматически создаются столбцы для сопоставления данных о схеме, предоставляемых источником данных.

После этого созданные столбцы можно будет изменить с учетом ваших потребностей. Например, можно удалить или скрыть столбцы, которые вас не интересуют, изменить порядок или типы столбцов. Дополнительные сведения об изменении столбцов см. в разделах, перечисленных в разделе "См. также".

Можно также привязать несколько DataGridView элементов управления к связанным таблицам для создания связей "основной/подробности". В данной конфигурации один элемент управления отображает родительскую таблицу, а другой — только те строки из дочерней таблицы, которые связаны с текущей строкой в родительской таблице. Дополнительные сведения см. в разделе Практическое руководство. Отображение связанных данные в приложении Windows Forms.

для следующей процедуры требуется проект приложения Windows с формой, содержащей DataGridView элемент управления или два элемента управления для связи «основной/подробности». сведения о запуске такого проекта см. в разделе как создать проект приложения Windows Forms и как добавить элементы управления в Windows Forms.

Привязка элемента управления к источнику данных

Щелкните глиф действия конструктора ( ) в правом верхнем углу DataGridView элемента управления.

Щелкните стрелку раскрывающегося списка рядом с параметром Выбор источника данных.

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

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

Разверните узлы Другие источники данных и Источники данных проекта, если они еще не развернуты, и выберите источник данных, к которому нужно привязать элемент управления.

Если источник данных содержит более одного элемента, например, если создан объект System.Data.DataSet , содержащий несколько таблиц, разверните источник данных, а затем выберите конкретный элемент для привязки.

Чтобы создать отношение "основной/подробности", в раскрывающемся окне Выбор источника данных для второго DataGridView элемента управления разверните объект, BindingSource созданный для родительской таблицы, а затем выберите связанную дочернюю таблицу из отображаемого списка.

Если в вашем проекте уже есть источник данных, форму данных можно также создать в окне Источники данных. Дополнительные сведения см. в разделе Окно источников данных.

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