Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中阅读excel会给我一个未知的日期格式_C#_Excel_Date Formatting - Fatal编程技术网

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

在C#中阅读excel会给我一个未知的日期格式,c#,excel,date-formatting,C#,Excel,Date Formatting,读取文件并将其显示在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 +

读取文件并将其显示在
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);
数字的整数部分表示自1900年1月1日起的天数。 时间以一天的分数表示


在您的示例中,一小时是一天的1/24:0.041667

您可以通过以下方式将数字转换为日期时间:

//  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);
数字的整数部分表示自1900年1月1日起的天数。 时间以一天的分数表示


在您的示例中,一小时是一天的1/24:0.041667

您可以通过以下方式将数字转换为日期时间:

//  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);
数字的整数部分表示自1900年1月1日起的天数。 时间以一天的分数表示


在您的示例中,一小时是一天的1/24:0.041667

您可以通过以下方式将数字转换为日期时间:

//  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);
数字的整数部分表示自1900年1月1日起的天数。 时间以一天的分数表示


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

我面临同样的问题,这里有一个提示。。。 在使用OLEDB打开文件之前,请从任何正在运行的线程中释放excel文件,或者如果已使用excel services打开该文件,请释放该文件。 我了解到,excel输出格式,如日期字段(在自定义类型的情况下),在excel services中打开并使用OLEDB并行读取时会有所不同。
试试看。

我也遇到了同样的问题,这里有一个提示。。。 在使用OLEDB打开文件之前,请从任何正在运行的线程中释放excel文件,或者如果已使用excel services打开该文件,请释放该文件。 我了解到,excel输出格式,如日期字段(在自定义类型的情况下),在excel services中打开并使用OLEDB并行读取时会有所不同。
试试看。

我也遇到了同样的问题,这里有一个提示。。。 在使用OLEDB打开文件之前,请从任何正在运行的线程中释放excel文件,或者如果已使用excel services打开该文件,请释放该文件。 我了解到,excel输出格式,如日期字段(在自定义类型的情况下),在excel services中打开并使用OLEDB并行读取时会有所不同。
试试看。

我也遇到了同样的问题,这里有一个提示。。。 在使用OLEDB打开文件之前,请从任何正在运行的线程中释放excel文件,或者如果已使用excel services打开该文件,请释放该文件。 我了解到,excel输出格式,如日期字段(在自定义类型的情况下),在excel services中打开并使用OLEDB并行读取时会有所不同。
试一试。

请展示一些代码你是如何阅读文件的请展示一些代码你是如何阅读文件的请展示一些代码你是如何阅读文件的请展示一些代码你是如何阅读文件的我还注意到,如果我打开文件,程序的阅读方式会有所不同。我还注意到,如果我打开了文件,程序的阅读方式也会有所不同文件打开。我还注意到,如果我打开文件,程序的读取方式会有所不同。我还注意到,如果我打开文件,程序的读取方式也会有所不同。