我正在阅读并使用互操作从excel文件中获取信息,但是当我从excel文件中读取日期时遇到了一个问题。 02/05/2012;它给出41060。
如何阅读正确的日期值或为何返回41060?
答案 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)将返回正确的格式化日期。