Заполнение DataGridView из excel файла
В этом посте я хочу продемонстрировать один из возможных способов чтения информации из электронных таблиц excel и её отображение у Windows приложении.
1) Я создаю проект Windows Application c формой, на которую помещаю DataGridView control и кнопку Start, на которую цепляю EventHandler.
2) Создаю класс (код ниже) с методом, в который буду передавать DataGridView control и имя файла, с которого будет идти заполнение. При нажатии на кнопку Start будет вызываться метод InitDataGridFromExcel.
class Filler { static public void InitDataGridFromExcel(DataGridView dataGridView, string fileName) { if (!File.Exists(fileName)) { throw new Exception(string.Format("File {0} wasn't found.", fileName)); } string connectionString = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = {0};Extended Properties=Excel 8.0;", fileName); string query = "SELECT * FROM[Лист1$]"; OleDbDataAdapter adapter = new OleDbDataAdapter(query, connectionString); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); dataGridView.DataSource = dataTable; } }
Поскольку у меня русская версия офиса, то в запросе (string query) есть русское слово «Лист». В результате запуска программы и нажатия на кнопку Start видим следующие.
Подгрузив такой файл:
программа показала такое окошко:
Открытые вопросы.
1) Пока я не разобрался, почему первый ряд из файла автоматически становится именами столбцов.
2) После заполнения объекта dataTable, он имеет 2 ряда, вместо трех. Самый первый ряд из файла, тот который стает именами столбцов, не входит в dataTable.Rows список.
P.S.
Мои исходники можно взять из attachments.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |