




Это означает, что вы где-то указали недопустимую дату, пытаясь преобразовать в дату OLE Automation или из нее за пределами допустимого диапазона с 1 января 4713 года до н.э. до 31 декабря 9999 года нашей эры. Возможная причина в том, что это могло произойти из-за того, что даты OLE-автоматизации представлены как двойные.
Разве это не слишком очевидный ответ?
Это очевидный вопрос, я не знаю, как можно было бы быть более полезным, если OP не предоставит никаких подробностей.
Согласовано. Мы не можем больше помочь без дополнительных деталей, таких как код.
Другие боролись с этим. Предлагаю посмотреть эти темы на DotNetNuke и DevShed.
Это означает, что где-то в программе выполняется попытка преобразования в дату OLE-автоматизации или обратно за пределы допустимого диапазона с 1 января 4713 года до н.э. до 31 декабря 9999 года нашей эры. Это могло произойти, потому что даты автоматизации OLE представлены как двойной.
Начните с поиска возможных вариантов использования этих методов:
OADate представлен как двойное значение, значение которого представляет собой количество дней от полуночи 30 декабря 1899 г. (отрицательные значения представляют более ранние даты).
Это исключение возникает при попытке преобразовать значение, выходящее за пределы допустимого диапазона дат Ole Automation, в / из значения .NET DateTime (методы DateTime.FromOADate и DateTime.ToOADate, которые также неявно используются для COM-взаимодействия).
Я считаю, что для преобразования в OADate значение .NET DateTime должно быть строго больше 01/01/0100.
Чтобы преобразовать из OADate в значение .NET DateTime, значение типа double должно быть строго больше -657435 (= 01/01/0100) и строго меньше 2958466.0 (01/01/10000).
Я использовал:
try
{
if (folderItem.ModifyDate.Year != 1899)
{
this.FileModifiedDate = folderItem.ModifyDate.ToShortDateString() +
" " +
folderItem.ModifyDate.ToLongTimeString();
}
}
//we need this because it throws an exception if it's an invalid date...
catch (ArgumentException) { }
чтобы справиться с той же проблемой, что и у меня. Это вызывает исключение, когда мы проверяем год в моем случае. Ничего не делать в недопустимую дату - это именно то поведение, которое я хочу, поэтому этот прием работает.
Я обнаружил, что столбец с большим row_id «257381195» пытался прочитать Excel как дату. В итоге я преобразовал данные этого столбца в строку, поставив перед row_id одинарную кавычку. Это решило мою проблему. Надеюсь это поможет.
Можете ли вы опубликовать код, вызывающий это?