Я читаю Excel-документ через oledb. Когда нет заголовка, как использовать столбцы в моем запросе для настройки условий?
Я хочу сделать что-то вроде этого:
SELECT * FROM [MY_SHEET$A3:M] WHERE [1] IS NOT NULL;
Когда я пытаюсь это сделать, я получаю следующую ошибку:
Не указано значение хотя бы для одного обязательного параметра.
Я хочу использовать номер столбца для моего состояния. Когда я говорю HDR=TRUE
в моей строке подключения, я мог бы использовать имя столбца, но в документе есть несколько повторяющихся имен, которые приводят к проблеме, что я получаю значение неправильного столбца. Переименование столбцов в документе было бы решением, но возможно ли это с использованием номеров столбцов?
Согласно комментариям Стива и Симо, я попробовал следующее:
SELECT * FROM [MY_SHEET$A3:M] WHERE [F1] IS NOT NULL;
Но я получаю то же сообщение об ошибке. Я попробовал это с HDR=TRUE
и HDR=FALSE
с []
arround F1
и без.
Здесь я загрузил xlsx-файл: https://ufile.io/fky0l
Точный текст команды SELECT * FROM [Sheet1$A3:M] WHERE F1 IS NOT NULL
Вот строка подключения
"Provider = Microsoft.ACE.OLEDB.12.0; Data
Источник = D: \ stack.xlsx; Расширенные свойства = \ "Excel
12,0 Xml; HDR = TRUE \ ""
Вот кодексанипета:
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\stack.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=TRUE\"";
using (var connection = new OleDbConnection(connectionString)
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = $"SELECT * FROM [Sheet1$A3:M] WHERE F1 IS NOT NULL";
var reader = command.ExecuteReader();
while(reader.Read())
{
var value = reader.Get<string>(0);
Console.WriteLine(value);
}
}
}