Импортировать ячейку с форматированием DateTime с помощью Spreadsheetgear

Я использую spreadsheetgear для чтения существующего файла Excel и импорта данных в базу данных SQL Server. Все работает нормально, пока мне не понадобится импортировать ячейку, отформатированную как дату - «* 14.03.2001». Я пытаюсь импортировать это поле в поле DateTime в базе данных. Не знаете, как это сделать?

Это процедура импорта -

fileInformation.DateReleased = worksheet.Cells["B20"].Text;
fileInformation.DateRequired = worksheet.Cells["B21"].Text;

public DateTime DateReleased { get; set; }
public DateTime DateRequired { get; set; }

person Craig    schedule 28.07.2015    source источник
comment
С чем вы столкнулись, какие-либо ошибки?   -  person fujiFX    schedule 29.07.2015


Ответы (1)


Даты / время хранятся в SpreadsheetGear (и Excel) в виде двойного числа, представляющего порядковый номер даты / времени. Вы можете узнать больше об этих серийных датах здесь, если хотите. Тот факт, что они отображаются как «дата» в ячейке, является просто функцией IRange.NumberFormat, примененного к ячейке («м / д / гггг» и т. Д.). Использование IRange.Text возвращает "отформатированное" значение ячейки в виде строки. Чтобы получить фактическое значение .NET DateTime из ячейки, вы можете использовать IWorkbook. NumberToDateTime (...) вспомогательный метод. Пример:

// Need the IWorkbook for which your "worksheet" object belongs to.
IWorkbook workbook = worksheet.Workbook;

// This code assumes there is *always* a date (double) value in this cell.  You may want 
// to do some additional error checking to ensure B20 actually has a number in it.  
// Otherwise the cast will give you issues.
DateTime dateReleased = workbook.NumberToDateTime((double)worksheet.Cells["B20"].Value);
fileInformation.DateReleased = dateReleased;

DateTime dateRequired = workbook.NumberToDateTime((double)worksheet.Cells["B21"].Value);
fileInformation.DateRequired = dateRequired
person Tim Andersen    schedule 29.07.2015