在C#中阅读excel给了我一个未知的日期格式

本文关键字:一个 未知 格式 日期 excel | 更新日期: 2023-09-27 17:58:55

读取文件并将其显示在DataGridView中时,日期显示为数字

2014年3月25日00:00为41723

2014年3月25日01:00是41723041667

这是什么格式?我如何找到它所代表的日期/月/年/小时?

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];

在C#中阅读excel给了我一个未知的日期格式

您可以通过以下方式将数字转换为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服务中打开并使用OLEDB并行读取时,excel输出格式会有所不同。试试看。