我正在使用互操作从 excel 文件中读取和获取信息,但是当我从我的 excel 文件中读取日期时,我遇到了一个问题。2012 年 2 月 5 日;它给出了 41060。
如何读取正确的日期值或为什么它返回 41060?
我正在使用互操作从 excel 文件中读取和获取信息,但是当我从我的 excel 文件中读取日期时,我遇到了一个问题。2012 年 2 月 5 日;它给出了 41060。
如何读取正确的日期值或为什么它返回 41060?
您找到了答案,但一些背景可能会有所帮助。
Excel 将日期和时间保存为数字。如果用户在单元格中键入 31-May-2012,Excel 会将其识别为日期,因此将值存储为 41060 并将数字格式设置为“dd-mmm-yyyy”。如果用户在单元格中输入 41060 并将数字格式设置为“dd-mmm-yyyy”,则该值将显示为 31-May-2012。数据输入完成后,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 的 Format() 和 VB.Net 的 Format() 使用的格式略有不同。
有关 Excel 日期的更多详细信息,请访问如何在 Excel 中使用日期和时间。
我发现它以双精度返回日期,因此 DateTime.FromOADate(41060) 将返回正确格式化的日期。