Как выбрать из определенного листа Excel в C#

#c# #oledbcommand

#c# #oledbcommand

Вопрос:

У меня есть эта команда на C#:

 OleDbCommand cmd = new OleDbCommand("select * from[Sheet1$]", con);
  

И он отлично работает, когда лист называется Sheet1, но в моем случае у листа другое имя. Как я могу этого добиться?

Я уже пробовал что-то подобное:

 string sheetName = "First sheet";
OleDbCommand cmd = new OleDbCommand("select * from[" sheetName "$]", con);
  

Комментарии:

1. Вы пробовали без «select * from[» SheetName «]»?

2. Если это не просто ошибка копирования / вставки, у вас должен быть пробел между from и [ . — select * from [" sheetName "$]

Ответ №1:

Вы должны удалить пробелы из названия листа, в примере изменения:

 string sheetName = "First sheet";
  

Для

 string sheetName = "FirstSheet";
  

Вам не разрешается использовать пробелы в имени таблицы на основе SQL.

Ответ №2:

Если у вас возникли проблемы с получением правильных имен листов, вы можете попробовать GetOleDbSchemaTable() получить схему и передать это значение своему OleDbCommand . Обратите внимание, что это работает, только если вы теперь определяете местоположение вашего листа в Excel.

Надеюсь, это поможет!

                 objConn = new OleDbConnection(constring);
                objConn.Open();
                // Get the data table containg the schema guid.
                var dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                var query = "select * from ["   dt.Rows[0]["TABLE_NAME"].ToString()   "]";

                DataSet ds = new DataSet();

                OleDbConnection con = new OleDbConnection(constring   "");
                OleDbDataAdapter da = new OleDbDataAdapter(sqlquery, con);
                da.Fill(ds);




  

Комментарии:

1. помимо этого, вы можете попробовать заключить название листа в одинарные кавычки [‘SheetName $’]. Это должно позаботиться о разделенных пробелами именах листов, таких как «Мой лист Excel».