Как выбрать из конкретного листа Excel в C # - PullRequest
0 голосов
/ 07 марта 2019

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Если у вас возникли проблемы с получением правильных имен листов, вы можете попробовать 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);




0 голосов
/ 08 марта 2019

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

string sheetName = "First sheet";

до

string sheetName = "FirstSheet";

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

...