У меня есть столбец Excel:
Отформатировано как формат данных даты:
И я получаю NullReferenceException
, если пытаюсь прочитать значение DateTime.
Вы знаете, что здесь не так и как это исправить? Можно ли как-нибудь преобразовать число в DateTime? Например, 31/12/9999 - это 2958465, когда я перехожу в числовой формат.
ICell в расширение строки
public static class NpoiExtension
{
public static string GetStringValue(this ICell cell)
{
switch (cell.CellType)
{
case CellType.Numeric:
if (DateUtil.IsCellDateFormatted(cell))
{
try
{
return cell.DateCellValue.ToString();
}
catch (NullReferenceException)
{
// https://stackoverflow.com/questions/15040567/c-xlsx-date-cell-import-to-datatable-by-npoi-2-0
//var prevCulture = Thread.CurrentThread.CurrentCulture;
//CultureInfo customCulture = new CultureInfo("en-GB", false);
//Thread.CurrentThread.CurrentCulture = customCulture;
string dateOutput = cell.DateCellValue.ToString();
//Thread.CurrentThread.CurrentCulture = prevCulture;
return dateOutput;
}
}
else
{
return cell.NumericCellValue.ToString();
}
case CellType.String:
return cell.StringCellValue;
case CellType.Boolean:
return cell.BooleanCellValue.ToString();
default:
return string.Empty;
}
}
}
Thread.CurrentThread.CurrentCulture
? - person krlzlx   schedule 01.02.2019Thread.CurrentThread.CurrentCulture
. Обычно у меня нет проблем с датами, но у этого столбца есть исключение вDateCellValue
. Таким образом, обходным путем было использованиеDateTime.FromOADate()
- person Muflix   schedule 01.02.2019