从工作表中获取日期后,日期将转换为两倍

时间:2019-05-08 14:01:44

标签: c# excel datetime

我有一个处理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 个答案:

答案 0 :(得分:1)

您将需要使用DateTime.FromOADate()从OADate(OLE自动化日期)转换为标准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);
}