Как заметил ... «а затем, так как я знаю, что соединение работает» ... это спорно. Тем не менее, при условии, что у вас есть действующее соединение ... код, похоже, ничего не делает "с" этим соединением ... Например, в строке ...
OleDbConnection con = new OleDbConnection(constr);
Эта строка кода может успешно завершиться, но вы не делать НИЧЕГО с соединением…, как «заполнение» таблицы данных данными из книги Excel.
После этой строки кода создается НОВЫЙ ПУСТОЙ DataTable
, а затем устанавливается эта «пустая» таблица как DataSource
к сетке. Я не уверен, что еще можно ожидать, кроме «пустой» сетки.
Наконец, кажется, что в строке соединения отсутствует некоторый синтаксис, и, вероятно, из-за этого произойдет сбой. Ниже приведены два примера, которые откроют файлы XLS и XLSX. Помните, что вам нужно знать имя листа, которым вы хотите заполнить таблицу.
Чтобы открыть файл XLSX с листом с именем «sheet1»…
private void btn_OpenXLSX_Click(object sender, EventArgs e) {
string path = @"path_to_the_XLSX_file";
string worksheetName = "sheet1";
string constr = "Provider = Microsoft.Ace.OLEDB.12.0; Data Source = " + path + "; Extended Properties=\"Excel 12.0; HDR = YES;Imex=1;\";";
OleDbConnection con = new OleDbConnection(constr);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + worksheetName + "$]", con);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
Stats_table.DataSource = dt;
}
Чтобы открыть файл XLS с рабочим листом «sheet1»…
private void btn_OpenXLS_Click(object sender, EventArgs e) {
string path = @"path_to_the_XLS_file";
string worksheetName = "sheet1";
string constr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + path + "; Extended Properties=\"Excel 8.0; HDR = YES;Imex=1;\";";
OleDbConnection con = new OleDbConnection(constr);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + worksheetName + "$]", con);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
Stats_table.DataSource = dt;
}
Надеюсь, это имеет смысл и поможет.