Как выбрать из любой таблицы в Excel файл с помощью OleDbDataAdapter

Я использую OleDbDataAdapter извлечь DataSet из файла excel, но у меня проблемы с SELECT инструкция

DataSet excelDataSet = new DataSet();
using (OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString))
{
     con.Open();
     OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter("select * from [Name of spreadsheet]", con);
     cmd.Fill(excelDataSet);
     con.Close();
}

если вы видите, что у меня есть "select * from [Name of spreadsheet]", но мне нужно получить любые электронные таблицы или, например, 1-ю таблицу, но название этой таблицы может быть любым.

Как указать это? Это специальные символы, такие как "select * from [%]"

1 ответов


вам нужно знать имя листа, чтобы применить к нему инструкцию select.
И нужно добавить специальный символ $ в конце имени.

Предположим, у вас есть лист с именем MyFirstSheet затем вы можете выбрать строки из его

 OleDbDataAdapter cmd = new OleDbDataAdapter("select * from [MyFirstSheet$]", con);

в случае, если вы не знаете названия ваших листов, вы можете позвонить

using (OleDbConnection con = new OleDbConnection(connectionString))
{
    con.Open();
    DataTable dt = con.GetSchema("Tables");
    string firstSheet = dt.Rows[0]["TABLE_NAME"].ToString();
    ...... work with the first sheet .....
}

этот пример должен дать вам имя первого листа в файле excel (другие листы доступны в последовательные строки после первого)