在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];
您可以通过以下方式将数字转换为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输出格式会有所不同。试试看。