2012-09-24 50 views
0

我有需要创建一个Excel对象,并做一些操作, 这里是我的代码部分C#程序:如何转换的“双”到“日期时间” Excel和C#之间

// 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 

回答

8

你可以试试这个:

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

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

然后设置值的日期时间:

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

而得到的值使用以下命令:

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

workSheet.Cells [1,1] =“2012-9-20”; DateTime dt = workSheet.Cells [1,1] .value(); //Debug.Print(dt.ToOADate()); – hkdeveloper758

3

通过打字`= 2012/9/20" 你告诉Excel中,这是一个公式2012除以9,除以20。等于11.17777777778。

尝试存储日期没有=迹象。

+0

感谢您的建议。但它会向我报告以下消息:“不能将类型'System .__ ComObject'隐式转换为'string'” – hkdeveloper758

2

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

0

老兄,你的excel值e不是日期。开始时放下等号。

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

相关问题