我有一个处理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
。
我想念什么?任何帮助将不胜感激!
答案 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);
}