Дата конвертируется в двойную при получении из листа - PullRequest
0 голосов
/ 08 мая 2019

У меня есть приложение, которое обрабатывает данные из книги Excel. В данной ячейке у меня есть дата в формате "dd/mm/yyyy", которую мне нужно отобразить на экране. Я использую следующий код, чтобы получить его из листа:

dateLabel.Text = excelApp.WorksheetFunction.VLookup(input, sheetToLook.Range["A2:G4"], 3, false).ToString();

Где excelApp определяется как Microsoft.Office.Interop.Excel.Application excelApp, а input - строка для поиска правильной строки.

Однако, когда я запускаю приложение, я получаю следующее значение:

Start Date: 43325

Ожидаемый результат 13/08/2018. Чего мне не хватает? Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 08 мая 2019

Вам нужно будет использовать DateTime.FromOADate() для преобразования из OADate (OLE Automation Date) в стандартный C # DateTime.В вашем конкретном примере, DateTime.FromOADate(excelApp.WorksheetFunction.VLookup(input, sheetToLook.Range["A2:G4"], 3, false)).Возможно, вы захотите добавить некоторую проверку данных для данных, которые вы извлекаете из этого поля, так как DateTime.FromOADate() требует double в качестве ввода.Я, вероятно, закодировал бы это как ниже

var excelDate = excelApp.WorksheetFunction.VLookup(input, sheetToLook.Range["A2:G4"], 3, false);

if(excelDate is double oaDate)
{
    dateLabel.Text = DateTime.FromOADate(oaDate);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...