Excel解析(xls)日期错误

时间:2010-04-12 18:44:51

标签: excel parsing date format

我正在开发一个项目,我必须解析excel文件,以便客户端提取数据。这里出现了一个奇怪的事情:当我在excel表格中以5/9(可能是9日)的格式解析日期时,我的程序中得到39577。我不确定这一年是否编码(这些表格是2008年)。

这些日期是某种时代以来的天数吗?

有谁知道如何将这些数字转换为有意义的数字?我不是在寻找一种能够在从excel文件解析时正确转换这些解决方案的解决方案(我们已经有数千个提取文件,需要人们选择相关信息 - 重新进行提取不是一种选择)。 / p>

3 个答案:

答案 0 :(得分:1)

DateTime.FromOADate(如果您使用的是.NET)是您想要的方法。 Excel日期存储为双精度数。如果您在1900年的前两个月有日期,那么您可能会对Excel 1900闰年错误感到厌烦。

来自http://msdn.microsoft.com/en-us/library/system.datetime.fromoadate.aspx

  

双精度浮点数   表示日期作为数字   在基准日期之前或之后的几天,   1899年12月30日午夜。标志   和d的组成部分对日期进行编码   作为积极或消极的一天   自1899年12月30日起流离失所,   和绝对值   d的小数部分编码时间   一天的一小部分   从午夜开始流离失所。必须是   负值657435.0之间的值   通过积极的2958466.0。

答案 1 :(得分:1)

Excel将日期存储为自0-JAN-1900以来的天数(因此1-JAN-1900的值为“1”)。您可以在此处找到Excel如何处理日期和时间的非常好的细分:

Dates And Times In Excel

当日期在Excel的屏幕上显示为“5/9”,“5月9日”或其他类似日期时,它是格式化的技巧,并不代表基础数据值。听起来你的解析程序正在提取基础值,而不是格式化日期。但是,为了建议修复,我需要知道你的解析程序是什么(Excel宏,公式,外部代码等)。

答案 2 :(得分:0)

您需要做的就是正确格式化单元格。或者我误解了你的问题 - 你是说你想在Excel外面做这件事吗?我不确定。如果结果是愚蠢的话,我会删除这个答案。