Вы можете указать диапазон ячеек, которые содержат данные, которые вы хотите получить.В форме:
[sheet1$[Start Cell]:[End Cell]]
В вашем случае вы можете изменить запрос, включая только ячейки, с B6
на ZZ
(что, по-видимому, является диапазоном, содержащим ваши данные. Адаптируйте его какНужно):
Не забудьте утилизировать созданные вами одноразовые объекты или объявить их в using
блоках)
string sheetName = "Sheet1";
string query = $"SELECT * FROM [{sheetName}$B6:ZZ]"
OleDbDataAdapter oda = new OleDbDataAdapter(query, cnnxls);
//(...)
oda.Dispose();
Вы, конечно, можете указать фильтр:
int fieldID = 204;
//
string query = $"SELECT * FROM [{sheetName}$B6:ZZ] WHERE FCID = {fieldID}"
using (OleDbConnection cnnxls = new OleDbConnection(strConn))
using (OleDbDataAdapter oda = new OleDbDataAdapter(query, cnnxls))
{
oda.Fill(tbContainer);
grdProductList.DataSource = tbContainer;
}
или фильтр диапазона:
string query = $"SELECT * FROM [{sheetName}$B6:ZZ] WHERE FCID BETWEEN 204 AND 300"
или, используя значения переменных:
int minValue = 204;
int maxValue = 300;
string query = $"SELECT * FROM [{sheetName}$B6:ZZ] WHERE FCID BETWEEN {minValue} AND {maxValue}"
Формат .xls
не поддерживает универсальный диапазон:
[sheet1$B6:ZZ]
не будет принято.
[sheet1$B6:O65535]
принято: данные находятся в диапазоне столбцов B6:O*
.
ОБНОВЛЕНИЕ : (специфично для этого вопроса):
Учитывая состав листа Excel, необходимо явно указывать имена полей, иначе результирующий DataTable
будет содержать пустые столбцы:
int fieldID = 204;
string fieldSelector = "[ FCID], [Product Name], [Category], [Sub Category], " +
"[Brand], [MRP], [Disc %], [Stock], [Discount Type]";
query = $"SELECT {fieldSelector} FROM [{sheetName}$B6:O65535] WHERE [ FCID] = {fieldID}";