Excelparsing(xls)date错误

我正在一个项目中,我必须parsingexcel文件,为客户端提取数据。 奇怪的是在这里popup:当我在excel表格中以5/9(5月9日)的格式parsingdate时,我的程序中得到39577个。 我不确定年份是否编码在这里(这是2008年的这些表)。

这些date是自某种时代以来的天数?

有谁知道如何将这些数字转换成有意义的东西? 我没有find一个解决scheme,可以在从excel文件parsing的时候正确地进行转换(我们已经有成千上万的提取文件,需要人工select相关信息 – 重新进行提取不是一种select)。

Excel将date存储为自0-JAN-1900以来的天数(因此1-JAN-1900将具有值“1”)。 您可以在这里findExcel如何处理date和时间的细分:

date和时间在Excel中

当Excel中的date显示为“5/9”,“5月9日”或其他类似情况时,这是格式化的技巧,并不代表基础数据值。 这听起来像你的parsing程序拉动底层的价值,而不是格式化的date。 然而,为了提出修正,我需要知道你的parsing程序是什么(Excelmacros,公式,外部代码等)。

DateTime.FromOADate(如果您使用.NET)是您想要的方法。 Exceldate存储为双打。 如果您在1900年的前两个月有date,您可能会遇到Excel 1900闰年错误。

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

表示date的双精度浮点数,表示date为1899年12月30日午夜基准日之前或之后的天数。d的符号和不可分割部分将date编码为1899年12月30日以后的正或负日差,并且d的小数部分的绝对值将一天中的时间编码为从午夜开始的一天的一小部分。 d必须是负值657435.0到正值2958466.0之间的值。

所有你需要做的是格式正确的单元格。 还是我误解你的问题 – 你是说你想在Excel之外做? 我不确定。 如果结果是愚蠢的,我会删除这个答案。