Выбор используемого диапазона листа Excel с помощью OLEDB Connection - PullRequest
0 голосов
/ 19 января 2012

Есть ли способ выбрать диапазон, используемый для листа Excel, через объект команды OLEDB?

Поскольку у меня есть файл Excel, содержащий 400 строк, но когда я удаляю 200 строк и пытаюсь выбрать лист сноваон выбирает до 400 строк снова вместо выбора 200 строк.Вот код, который я написал для выбора листа:

oledbConn = new OleDbConnection(connectionString);
oledbCmd = new OleDbCommand("select * from [Sheet1$]", oledbConn);
oledbConn.Open();
oledbDr = oledbCmd.ExecuteReader();
    while(oledbDr.Read())
    {
}

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Afaik вы можете сделать это двумя способами:

Во-первых.

Напишите простой выбор SQL в OleDBCommand. На данный момент вы выбираете все строки в Excel. Вероятно, тот факт, что вы удалили 200 строк из документа, не помогает, поскольку он по-прежнему выбирает эти пустые строки.

Пример:

select * from [Sheet1$] WHERE ID <= 200

Второй.

Загрузите все данные в DataTable и работайте над этим программно.

Пример:

DataTable xlsData = new DataTable();
List<string> result = new List<string>();
string query = string.Format("SELECT * FROM [{0}]", this.SheetName);
OleDbDataAdapter dbAdapter = new OleDbDataAdapter(query, dbConnection);
dbAdapter.Fill(xlsData);
foreach (DataColumn column in xlsData.Columns)
{
  result.Add(column.ColumnName);
}
0 голосов
/ 01 июня 2016

Try выберите DISTINCT * из [Лист1 $]

...