如何将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函数转换)。 你现在得到的是无稽之谈。