在C#中读取excel给了我一个未知的date格式

在读取文件并在DataGridView显示时,date显示为一个数字

03/25/2014 00:00是41723

03/25/2014 01:00是41723,041667

这是什么格式,我如何find它代表的date/月/年/小时?

 string src = "the path"; OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + src + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""); OleDbDataAdapter da = new OleDbDataAdapter("select * from [RENNES4_wk13$]", con); da.Fill(dataSet); dataGridView1.DataSource = dataSet.Tables[0]; 

您可以按照以下方式将数字转换为DateTime

 // cell as number (days since 1.1.1900 00:00) double x = double.Parse(v); DateTime d = DateTime.Parse("01.01.1900 00:00"); d = d.AddDays(Math.Floor(x) - 2); // had to subtract 2 to get it right. Why? d = d.AddMinutes((x - Math.Floor(x)) * 24 * 60); 

数字的整数部分给你自01-Jan-1900日以来的日子。 时间是一天中的一小部分。

在你的例子中,一个小时是一天的1/24:0.041667

我面临同样的问题,这里有一个技巧…在使用OLEDB打开文件之前,从任何正在运行的线程释放您的Excel文件,或者如果您已经使用Excel服务打开它。 我了解到,excel输出格式对于像date(在自定义types的情况下)的字段在excel服务中已经打开并且使用OLEDB并行读取时是不同的。 只要试一试。