如何将Excel和c#之间的“double”转换为“datetime”

我有ac#程序需要创build一个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 

那么如何让输出再次成为“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 

你可以试试这个:

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

  ws.Cells[1,1].Style.Numberformat.Format = "yyyy/MM/dd"; 

然后将值设置为DateTime:

 workSheet.Cells[1, 1] =new DateTime(2012,9,20); 

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

 double d = double.Parse(workSheet.Cells[1, 1].value()); DateTime conv = DateTime.FromOADate(d); 

通过input“= 2012/9/20”,你告诉Excel这是一个公式,2012年除以9,除以20等于11.17777777778。

尝试存储没有=号的date。

如果要在Excel单元格中存储文字或预格式化的值,请使用单引号前面的值。 例如, workSheet.Cells[1, 1] = "'2012/9/20";

老兄,你的卓越价值不是约会。 在开始时放下等号。

一旦你这样做,你会得到适当的双重价值(可以通过OADate函数转换)。 你现在得到的是无稽之谈。