oledb возвращает форматированные значения даты

#c# #oledb #date-format

#c# #oledb #дата-формат

Вопрос:

У меня есть еще одна интересная проблема. Я использую oledb для получения данных из Excel. строка подключения:

 oleConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="   filepath   "; Extended Properties="Excel 12.0;IMEX=1;HDR=no;"";
  

и оператор select является:

 string strSQLWorks ="SELECT * FROM [Работы$] WHERE [F1]<>null";
  

Итак, я получаю все столбцы. Но в моем объекте datatable я получаю дату в таком формате — мм / дд / гггг.
Когда я использую HDR= yes и другой оператор select, я получаю дату, например, дд.мм.гггг.
В Excel вся дата в ячейках выглядит как дд.мм.гггг, я не могу понять, почему oledb возвращает мне форматированное значение даты.

Комментарии:

1. Чего вы хотите достичь? AFAIK Excel в любом случае использует настройки глобализации системы для отображения дат, валют и т. Д

2. Форматирование даты — это отображение, а не на уровне данных, дата доступа — это дата, у нее нет формата, это часть данных, представляющая дату, вы можете форматировать вывод, как вам нравится, используя что-то вроде string.format()

3. Я хочу получать данные из ячеек так, как они есть в ячейке. Мне нужен формат, подобный дд.ММ.гггг.

4. и если у вас есть примеры того, как форматировать строковое значение, содержащее мм / дд / гггг, в строку, содержащую дд.мм.гггг, поделитесь им, пожалуйста.

5. Является ли возвращаемое значение строкой или действительно датой-временем? Что произойдет, если вы просто приведете его к дате-времени? Если это работает, то вы можете использовать . Перегрузка toString для указания строки формата.