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

标签 c# excel datetime

我有一个c#程序需要创建一个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";

然后将值设置为日期时间:

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

要获得值(value),请使用以下内容:

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

关于c# - 如何在Excel和c#之间将 "double"转换为 "datetime",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561042/

相关文章:

java - Integer.decode() Java/C#

c# - 在框架中使用 Funcs 而不是实例

vba - 将 CSV 合并到一张表中并删除标题

c# - 保存/创建/导出 Excel 工作表时出现 OutOfMemoryException

c# - 关于c#中的静态类

excel - 为单元格创建变量 (VBA)

mysql - 根据行值和时间戳计算日期

MySQL 时间数学

datetime - 时间上的奇怪行为。Go 中的 Parse 函数

c# - 将消息从存储过程返回到 C# 应用程序