使用Interop Excel.Application从excel文件中读取“日期”

时间:2012-07-05 08:35:42

标签: vb.net interop excel-interop

我正在阅读并使用互操作从excel文件中获取信息,但是当我从excel文件中读取日期时遇到了一个问题。 02/05/2012;它给出41060。

如何阅读正确的日期值或为何返回41060?

2 个答案:

答案 0 :(得分:3)

您找到了答案,但有些背景可能会有所帮助。

Excel将日期和时间保存为数字。如果用户在单元格中键入31-May-2012,则Excel会将其识别为日期,因此将值存储为41060并将数字格式设置为“dd-mmm-yyyy”。如果用户将41060键入单元格并将数字格式设置为“dd-mmm-yyyy”,则该值将显示为2012年5月31日。数据输入完成后,Excel不会记录第一个41060作为日期输入,第二个作为数字输入。

在PC上,日期的整数部分是自1900年以来的天数(在Mac上使用1904年),小数部分为:

time in seconds
---------------
seconds in day

所以41060.25代表:2012年5月31日6:00:00

通过Excel InterOp读取数据时,如果您不知道数据的类型,我建议您.NumberFormat以及.Value.Text也可能有用;它给出了用户看到的价值。

警告:如果你得到.NumberFormat,Excel使用的格式与VBA格式()和VB.Net格式()使用的格式略有不同。

有关Excel日期的详细信息,请访问How to use dates and times in Excel

答案 1 :(得分:2)

我发现它以double形式返回日期,因此DateTime.FromOADate(41060)将返回正确的格式化日期。