如何在Excel和c#之间将"double"转换为"datetime"

lit*_*758 0 c# excel datetime

我有一个ac#program需要创建一个excel对象,并做一些操作,这里是我的代码的一部分:

// c# code:

workSheet.Cells[1, 1] = "=2012/9/20";       //asign "2012/9/20" to cell[1,1] in Excel
double d = workSheet.Cells[1, 1].value();   // by default, Excel will return 11.17
Debug.Print(d.ToString());                  //c#:  d = 11.1777777777778
Run Code Online (Sandbox Code Playgroud)

那么如何让输出再次成为"2012/9/20"?

我尝试了一些代码,但失败了:

DateTime str = DateTime.FromOADate(d);     //c#: str = 1/10/1900 4:16:00 AM
DateTime str = new DateTime((long)d);      //c#: str = 1/1/0001 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)

ígo*_*gor 9

你可以试试这个:

首先在单元格中设置格式:

 ws.Cells[1,1].Style.Numberformat.Format = "yyyy/MM/dd";
Run Code Online (Sandbox Code Playgroud)

然后将值设置为DateTime:

workSheet.Cells[1, 1] =new DateTime(2012,9,20);
Run Code Online (Sandbox Code Playgroud)

为了获得价值,请使用以下内容:

double d = double.Parse(workSheet.Cells[1, 1].value());
DateTime conv = DateTime.FromOADate(d);
Run Code Online (Sandbox Code Playgroud)