Excel — Недопустимый набор дат (год до 1900)

#c# #excel #datetime #oracle11g

#c# #excel #дата и время #oracle11g

Вопрос:

Мне нужно экспортировать данные в Excel, но, к сожалению, из таблицы Oracle, где вставки происходят через веб-приложения. Конечные пользователи допускают множество опечаток (вероятно, плохой дизайн приложений), и наиболее распространенными ошибками являются неправильно введенные даты. Одним из них является «16.03.0219», который является действительной датой, поэтому вставка происходит, но дата, как вы видите, до 1900 года.

Когда я пытаюсь преобразовать эту дату, она терпит неудачу, используя все методы, с которыми я столкнулся (FromOADate, ToOADate, DateTime.Синтаксический анализ, преобразование.Текущее время и т. Д.).

Как я могу преобразовать это в дату, действительную для вставки в Excel?

Мое текущее преобразование выглядит следующим образом:

 ((DateTime)my_date).ToOADate().ToString(CultureInfo.InvariantCulture)
 

Это успешно преобразует все даты, пока не столкнется с ошибками этой даты. Заранее спасибо за помощь.

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

1. «Когда я пытаюсь преобразовать эту дату, она завершается неудачей» — но DateTime.Parse("16.03.0219") не имеет проблем с анализом этой даты.

2. Выполните поиск / замену в этом столбце для чего-либо меньшего, чем 1900, и замените на 1900…

3. @stuartd, я попробую это как можно скорее, пока не пробовал.

4. @stuartd, возможно, синтаксический анализ работает, но при попытке вставить это в Excel все еще возникает ошибка.

5. Если вы задаете для ячейки в Excel формат даты, вы также можете ввести «abc * без ошибок. Формат применяется только в том случае, если это допустимая дата. Но ни «abc», ни «16.03.0219» не являются допустимыми датами для Excel. Переход со строками для недопустимых дат — единственный вариант, который я вижу.