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

Импорт Excel в DataGridView различными методами

Добрый день, реализовал 2 варианта программы для импорта Excel в DataGridView:

В 1 методе устраивало всё (возможность задания границ загружаемого диапазона, выбор таблицы для загрузки), кроме скорости загрузки в датагрид
Во 2 методе ситуация обратная, мгновенная загрузка в датагрид, но отсутствует возможность задания границ загружаемого диапазона, и выбор таблицы для загрузки.

Хотелось импортировать 2 методом, но с сохранением вышеописанных возможностей. Подскажите пожалуйста как реализовать эту функцию.

P.S. При указании ненулевого значения для переменной Sheet, которая как я понимаю отвечает за выбор загружаемой таблицы из файла Excel происходит «сдвиг» загружаемого файла. При sheet=1 загружается действительно 1 таблица, но со 2 строки 1 столбца, однако при Sheet=0 загружается 2 таблица целиком с первой строки 1 столбца.

Импорт из Excel в dataGridView
Ребят помогите: Нужно, чтоб при нажатие на кнопку в грид копировались данные, но только таблицы с.

Импорт из Excel в datagridview
Здравствуйте! У меня возникла проблема импорта данных excel в datagridview. В документе содержится.

Импорт из Excel в datagridview
Не получается вывести все строки с данными. Выводится только первая строка. OpenFileDialog opf.

Импорт данных из Excel в DataGridView
Всем доброго дня! После обновления Windows 7, при импорте данных из Excel в DGV столкнулся с.

по 2-му методу, вы через Select не можете взять какой-то диапазон ячеек с листа Excel? Попробуйте

если со всего листа, то

Спасибо, всё заработало через команду Select
string select = String.Format(«SELECT * FROM [Calculating$A1Как подключить excel к datagridview10]», sheet1);[/CSHARP]
Но остаётся проблема статичности этого кода. Хотелось бы иметь возможность изменять и лист и загружаемый диапазон через 3 textBox’а. Кавычки перед SELECT и после ] не дают возможности прописать в них txtSheet.Text+»$»+txtFrom.Text+»:»+txtTill.text

Добавлено через 38 минут
Всё заработало
Выкладываю код полностью:

Источник

Загрузка данных из Microsoft Excel в DataGridView: Справочник по C#

Создайте проект Windows Form в Microsoft Visual Studio и добавьте на форму три компонента:

Выберете компонент «dataGridView1» и сделайте клик правой клавишей мыши по нему, из появившегося контекстного меню выберете пункт «Свойства».

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

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


Пример №1
В данном примере рассмотрено использование функций приложения Microsoft Office Excel из пакета Microsoft Office, c использованием библиотеки объектов Microsoft Excel 14. Данная библиотека позволяет управляемому коду взаимодействовать с объектной моделью приложения Microsoft Office, основанной на модели COM. Сделайте двойной клик по компоненту «button1», вы перейдете в автоматически созданный метод «button1_Click», события компонента «Click».

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

Перейдите в «Обозреватель решений» и найдите группу «References» которая содержит все ссылки на внешние компоненты в проекте. Сделайте клик правой клавишей мыши по данной группе и выберете из появившегося контекстного меню, пункт «Добавить ссылку…».

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

У вас откроется окно «Менеджер ссылок – (имя вашего проекта)», в левой части данного окна вам будет предложено выбрать одну из категорий. Visual Studio предоставляет четыре группы для выбора.

Выберете группу «COM» и ее подгруппу «Библиотеки типов». В центральной части окна вам будет предложен список доступных библиотек для подключения к вашему проекту. Найдите в списке библиотеку «Microsoft Excel 14.0 Object Library» и поставьте галочку рядом с именем данной библиотеки. В нижней части окна нажмите кнопку «ОК».

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

После добавления библиотеки, у вас появится три новых пункта в обозревателе решений:

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

Для работы с добавленными ссылками необходимо добавить следующие пространства имен с использованием директивы «using»:

В данном примере для открытия файла используется класс «OpenFileDialog», реализующий открытие окна для выбора файла по заданному фильтру «Excel 2003(*.xls)|*.xls|Excel 2007(*.xlsx)|*.xlsx». Данный фильтр так же реализует защиту от выбора файла не относящегося к Excel.

После выбора файла создается новый объект «Application» или приложение «Excel», которое может содержать одну или более книг, ссылки на которые содержит свойство «Workbooks». Книги — объекты «Workbook», могут содержать одну или более страниц, ссылки на которые содержит свойство «Worksheets». Страницы – «Worksheet», могут содержать объекты ячейки или группы ячеек, ссылки на которые становятся доступными через объект «Range». Полученные данные из файла будут заноситься в таблицу «dt», созданную с использованием класса «DataTable».

В коде присутствует проверка, что пользователь действительно выбрал файл, если данное условие выполнено, в текстовое поле с помощью свойства «FileName», класса «OpenFileDialog» помещается путь, имя и расширение выбранного файла в элемент управления «textBox1».

Для открытия существующего документа используется метод «Open» из набора «Excel.Workbooks», в качестве основного параметра указывается путь к файлу, остальные параметры остаются пустыми.

Полный список параметров метода «Open» приведен в таблице ниже.

Имя параметраОписание
FileNameeИмя открываемого файла
UpdateLinksСпособ обновления ссылок в файле
ReadOnlyПри значении true открытие только для чтения
FormatОпределение формата символа разделителя
PasswordПароль доступа к файлу (до 15 символов)
WriteResPasswordПароль на сохранение файла
IgnoreReadOnlyRecommendedПри значении true отключается вывод запроса на работу без внесения изменений
OriginТип текстового файла
DelimiterРазделитель при Format = 6
EditableИспользуется только для надстроек Excel 4.0
NotifyПри значении true имя файла добавляется в список нотификации файлов
ConverterИспользуется для передачи индекса конвертера файла используемого для открытия файла
AddToMRUПри true имя файла добавляется в список открытых файлов
Local
CorruptLoad

Для доступа к листу из книги «Workbook», используется метод «Sheets.get_Item» с указанием номера листа. Нумерация листов начинается с 1.

Чтобы получить объект Microsoft.Office.Interop.Excel.Range, который представляет все ячейки, содержащие значение на данный момент, используется свойство станицы «Worksheet.UsedRange».

После получения объекта «Range», с помощью цикла «For» загружается первая строка из таблицы и каждое значение устанавливается в качестве имени колонки таблицы.

Далее таким же способом загружаются все оставшиеся строки с добавлением в таблицу.

По завершении загрузки данных с указанного листа, сформированная таблица «dt» подключается к элементу управления «dataGridView1». Так же открытый объект «Application» или приложение «Excel» закрывается.

Полный листинг рассмотренного кода, приведен ниже, добавьте его в метод «button1_Click» компонента «button1».


Пример №2
Данный пример в качестве механизма получения данных использует класс «OleDbConnection», который предоставляет открытое подключение к источнику данных. При подключении необходимо указать строку специальную строку с несколькими параметрами:

Драйвер Excel считывает определенное количество строк (по умолчанию 8 строк) в указанный источник для определения типа данных каждого столбца. Если столбец содержит смешанные типы данных, особенно если числовые данные смешаны с текстовыми данными, драйвер принимает решение в пользу того типа данных, которого больше, и возвращает значения NULL в ячейки, содержащие данные другого типа. (В случае равенства преимущество получает числовой тип.) Большинство параметров форматирования ячеек в листе Excel не затрагивает это определение типа данных. Можно изменить поведение драйвера Excel, указав режим импорта. Чтобы указать режим импорта, необходимо добавить параметр IMEX=1 к значению расширенных свойств в строке соединения. В этом состоянии драйвер принудительно преобразовывает смешанные данные в текст. После составления строки подключения, устанавливается соединение с указанным файлом через класс «OleDbConnection»

При успешном подключении к источнику данных Excel с помощью «Microsoft ADO.NET», создаётся расположенный в памяти кэш данных, с использованием класса «DataSet». Далее извлекается список таблиц метаданных с помощью метода «GetOleDbSchemaTable».

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

После получения таблицы с листами, получаем название первого листа, для создания sql запроса к файлу. Изменяя значение «Rows», вы изменяете, номер листа в книге, к которому будет выполнен запрос.

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

Далее при помощи класса «OleDbDataAdapter» и его метода «Fill» данные загружаются в Dataset – «ds».

Полный листинг примера приведен ниже.

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

Скачайте данный компонент и перейдите в обозреватель решений. Найдите группу «References», в которой содержатся все ссылки на внешние компоненты в проекте. Сделайте клик правой клавишей мыши по данной группе и выберете из появившегося контекстного меню, пункт «Добавить ссылку…».

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

Выберете группу «Обзор», данная группа позволяет вам осуществить поиск компонента в файловой системе. Нажмите на кнопку «Обзор…», расположенную в нижней части окна менеджера ссылок.

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

У вас откроется окно с заголовком «Выберете файлы, на которые нужно установить ссылки», перейдите в директорию со скачанными библиотеками. Данные библиотеки находятся в архиве «WinRar», распакуйте его. В папке с распакованным архивом вы увидите две директории:

При создании данного проекта был выбран .Net Framework версии 3.5, поэтому переходим в директорию «Net20» и выбираем две библиотеки расположенные в ней, это «Excel.dll» и «ICSharpCode.SharpZipLib.dll». После выбора данных библиотек, нажмите на кнопку «Добавить» расположенную в нижней части данного окна.

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

После добавления библиотек, вы увидите их название, и путь к ним в центральной части окна менеджера ссылок. Так же напротив каждой из них будет установлена галочка, это означает, что в проект будут добавлены ссылки на обе библиотеки. В левой части окна будет выведено описание библиотек, это «Имя», «Автор» и «Версия файла». Нажмите на кнопку «ОК», расположенную в нижней части окна менеджера.

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

После добавления ссылок на библиотеки, у вас появится два новых пункта в обозревателе решений.

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

Перейдите в конструктор формы, нажав сочетание клавиш «Shift+F7». Добавьте на форму элемент управления «Button» из панели элементов и сделайте двойной клик левой клавишей мыши по нему. Вы перейдете в автоматически созданный метод «button3_Click», события компонента «Click». Добавьте приведенный ниже листинг в тело данного метода.

В данном примере рассмотрен листинг реализующий вставку данных скопированных в буфер обмена из файла Excel. Для получения данных из буфера обмена используется класс «Clipboard» с использованием его метода «GetDataObject», который извлекает данные находящиеся в данный момент, в системном буфере обмена. Во избежание ошибок с форматом получаемых данных, используется интерфейс «IDataObject», который предоставляет не зависящий от формата, механизм передачи данных.

Более подробно ознакомиться с классом «Clipboard», вы можете на сайте Microsoft MSDN.

Так как в буфере обмена, все данные содержаться в виде одной строки и их необходимо разбить на массив данных.

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

Данную задачу решает метод «String.Split». Метод возвращает строковый массив, содержащий подстроки разделенные элементами «r» — возврат каретки и «n» — перевод строки.

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

Полученный массив строк содержит «t» — знак горизонтальной табуляции, который разделят значения ячеек. Для добавления столбцов с заголовками (если такая строка скопирована в буфер обмена), необходимо взять из массива первый элемент и с использованием метода «String.Split» разбить на новый массив, указав в качестве элемента разделения знак горизонтальной табуляции — «t».

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

Далее необходимо с помощью цикла «foreach» пройти по всему массиву и добавить новые колонки с указанием в качестве имени полученное значение.

После получения всех данных из буфера обмена и заполнения таблицы «dt», она устанавливается в качестве источника данных элементу управления «dataGridView1». Перейдите в конструктор формы, нажав сочетание клавиш «Shift+F7». Добавьте на форму компонент «Button» из панели элементов и сделайте двойной клик левой клавишей мыши по нему. Вы перейдете в автоматически созданный метод «button4_Click», события компонента «Click». Добавьте приведенный ниже полный листинг в тело данного метода.

Пример №5

Добавление данных вручную.

В первых трех примерах присутствует строка закрытия подключения к выбранному файлу. Например:

Данные строки кода необходимы для завершения процесса «EXCEL.EXE», каждый раз запускающегося при подключении к выбранному файлу. При отсутствии данного кода, количество процессов с каждым открытым файлом будет возрастать, что может привести к сбоям в работе операционной системы.

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

Вы так же можете самостоятельно рассмотреть и другие компоненты по работе с файлами Microsoft Excel, например библиотеки от «GemBoxSoftware».

Ссылка для скачивания примера: Яндекс.Диск

Ссылка для скачивания библиотеки Excel Data Reader: Яндекс.Диск

Источник

Load Excel records into a DataGridView in C#

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

This example shows how you can load Excel records into a DataGridView control. You can use similar techniques to load Excel data into other controls such as other kinds of grid controls or a TreeView control.

This example uses the Microsoft Excel interop library to build an Excel server. before you can use the library, you need to add a reference to it. To do that, open the Properties window, right-click References, and select Add Reference. On the COM tab, double-click the Microsoft Excel 14.0 Object Library entry.

To make using the library easier, add the following using directive to the top of the code file.

To make it easier to find the Excel workbook, I added it to the project. To do that, open the Project menu and select Add Existing Item. Select the file and click Add.

Then in Solution Explorer, click on the workbook. in the Properties window, set its “Build Action” property to Content and set its “Copy to Output Directory” property to “Copy if newer.” Now when you run the program, the file will be copied into the executable directory so the program can find it easily.

When the program starts, the following code places the file’s location in the program’s text box.

When you click the Load button, the following code executes.

This code creates an Excel application object and uses it to open the workbook. Notice that the Workbooks.Open method (and many other Excel application methods) take parameters that are non-specific objects. Even though it is common to use only a few of those parameters, you cannot simply set the others to null. Instead you should use the special value Type.Missing to indicate that you are not using a parameter.

The code then gets a references to the workbook’s first worksheet. If the data that you want is on one of the workbook’s other worksheets, select that one instead.

Next, the program needs to find out where the data is on the worksheet. It uses the sheet’s UsedRange property to get a Range that represents the cells that are used by the worksheet. Note that the range does not include completely empty rows and columns. This example’s workbook contains data in columns B through E and rows 3 through 12. The used range does not include the blank column A or the blank rows 1 and 2. That means the program will not waste space displaying empty rows and columns in the DataGridView.

Having found the used range, the code gets its number of rows and columns.

Next, the program uses the used range’s Value2 method to copy the values in the range into a two-dimensional array. It calls the helper methods SetGridColumns and SetGridContents to define the grid’s columns and to load Excel records into the grid.

After it has loaded the data, the program closes the workbook and the Excel server.

The following code shows the SetGridColumns helper method.

This method loops through the cells in the data array’s first row and adds each value to the DatagridView control’s Columns collection. It sets a column’s name to the cell’s text with “col_” prepended in front of it. It sets the column’s text to the cell’s value.

The following code shows the SetGridContents helper method.

This method loops through the value array’s rows. It skips the first row because it contains the column headings. For each row, the code creates a row_values array to hold the values for the row. It then loops through that row’s columns and copies the corresponding values from the data array into the row_values array. After it has filled in the row_values array, the code adds the values to the DataGridView control’s row data.

That’s all there is to it. Download the example to see the program in action.

Источник

Импорт таблицы Excel в DataGridView С#

У кого-нибудь есть пример кода или ссылка, которая может помочь мне сделать это? Спасибо огромное!

В случае, если вы хотите импортировать столбец файла excel в пустой столбец в доступном datagridview.

Пример: у вас есть datagridview, как показано ниже, и вы хотите прочитать файл excel и импортировать в столбец «Класс»,

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

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

Предположим, вы хотите добавить данные из диапазона A1 в A11 файла excel в столбец «Класс» (2-й столбец) в datagridview

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

Вы можете сделать это с помощью этой команды:

«Или только iif имеет 2 строки в datagridView и 5 строк в excel, как импортировать только 2?, Поэтому, если я добавлю еще 1 строку и я импортирую, он импортирует 3 строки в excel. Не так ли возможно?»

→ Да, это возможно. Во-первых, вам нужно определить, сколько строк вам нужно добавить в datagridview.

Пример: у вашего datagridview есть 2 строки, но ваш файл excel имеет 5 строк

→ Перед импортом необходимо добавить 3 строки в datagridview.

Добавьте коды кода в область hightlight к вашему коду.

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

Не забудьте определить «данные» как глобальные, а не локальные.

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

«Что делать, если класс столбца в excel имеет пустые строки? Я хочу импортировать A1-A10, но мой столбец класса в excel имеет только a1-a5, что не возможно, что я могу получить также пустые столбцы, не получая Out of Range Excetion? Я получил ошибку. Я пытаюсь поместить только 1 данные в столбец класса в excel только для того, чтобы поместить A1 и все равно получить A1-A10 в запросе строки constr. «

→ Как вы видите на рисунке ниже, я попытался поместить только 1 данные «A1» в столбец класса в файле excel. Когда я импортирую этот файл excel в datagridview, я не сталкиваюсь с каким-либо излучением вне диапазона.

Источник

Import Excel to DataGridView and Modify or Add new Data to Excel using C# and Vb.Net

Tools you can use

To interact with an Excel file (or any other Microsoft office app) from your Windows Forms application, you’ll have to first add a reference named Microsoft Excel 12.0 Object Library to your project and later import or use a namespace named Microsoft.Office.Interop.Excel inside the applications source.

First, Add a Reference

After you have created the project, add a reference. From the top menu (in your projects IDE), select the Project tab and choose Add Reference… It will open the Add Reference window. Select the COM tab and find Microsoft Excel 12.0 Object Library (or a higher version) from the list. Select it and Click Ok. See the image.

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

In the beginning of the program, I have added the namespace Excel = Microsoft.Office.Interop.Excel; which provides me all the classes, methods and properties to interact with an Excel file.

I have also added the namespace using System.Drawing; (in C# only. Its readily available in VB). This is optional though. Since, I am using the Color property to change the color of the first columns value in the Grid. I am using this property inside the dataGridView1_RowStateChanged event.

I have explained the properties and events below.

The procedure “Excel2Grid”

This procedure is called after you open the file dialog and select an Excel file. It first creates the headers for the Grid. Next, it will add buttons to the last column of each row.

DataGridViewButtonColumn btn = new DataGridViewButtonColumn();

Finally, it creates and adds the rows in the DataGridView, using data from the Excel sheet.

The Method ProcessCmdKey()

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

DataGridView Event CellContentClick

The dataGridView1_CellContentClick is called when you click inside a Grid’s cell (any cell in any row). The last cell in each row has a Button, to save the data back to Excel file. Clicking the button will call this event and it would first check the control that was clicked. If it’s a button, it will extract data from that row and save the data in the Excel sheet.

There is a condition. It checks if the first cell value is Read only (the values are Gray in Color). If yes, then this rows data already exists in the Excel sheet. Therefore, it would modify the data. Else, it would save the record in a new row in the Excel sheet.

DataGridView Event RowStateChanged

I am using the dataGridView1_RowStateChanged event to identify exiting data in Excel. Therefore, when you select and import Excel’s data to the DataGridView, it would set the first cell’s value as Read only and change the fore color to Gray.

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

The color will differentiate between the existing and new data.

There may be other ways to deal with Excel data using a DataGridView in a Windows Forms application. This is one way you can do it. I think its simple.

The example does not explain a typical CRUD operation. It however gives you an idea about how you can import data from Excel file into a DataGridView, manipulate the data or create new data in the Grid and finally save the new or modified data back to the Excel sheet.

You can add other controls to the DataGridView, like binding it with a Combo Box or add images etc. to do other complex operations.

Источник

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

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