Я читаю xlsx-файл через oledb. Есть несколько строк, в которых столбец (содержащий строку даты) возвращает ноль, а некоторые строки, в которых столбец (также содержащий строку даты) возвращает строку даты. В Excel для типа столбца установлено значение «дата».
Вот моя строка подключения:
$ "Provider = Microsoft.ACE.OLEDB.12.0; Data
Источник = {PATH_TO_FILE}; Расширенные свойства = \ "Excel 12.0
Xml, HDR = NO \ ""
Вот текст команды для запроса данных:
$ "SELECT * FROM [SHEET_NAME $ A4: BC] ГДЕ
F1 НЕ НУЛЯЕТ "
Вот как я читаю данные из записи данных:
var test = dataRecord.GetValue(dataRecord.GetOrdinal("F39"));
Вот несколько примеров того, что инспектор показывает мне, когда тест содержит строку даты:
{07.01.1975 00:00:00}
{03.08.1987 00:00:00}
{03.10.1988 00:00:00}
{01.05.1969 00:00:00}
{20.12.2016 00:00:00}
{18.07.2011 00:00:00}
В остальных случаях инспектор показывает только:
{}
Вот скриншот из xlsx-документа, где я пометил строку красным цветом, где возвращаемое значение пустое, и зеленым, где возвращена фактическая строка даты:
![enter image description here](https://i.stack.imgur.com/Op7nQ.png)
Строки даты отформатированы как dd.mm.yyyy
Почему эти строки возвращают пустое значение вместо строки даты?
В соответствии с предложением AndyG я проверил, могут ли значения строки даты зависать в зависимости от формата («dd.mm.yyyy» против «mm.dd.yyyy»). Но есть случаи, которые недействительны для "mm.dd.yyyy", которые не завершаются неудачей.