2

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

4 回答 4

13

你可以试试这个:

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

 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);
于 2012-09-24T08:13:55.433 回答
3

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

尝试存储不带=符号的日期。

于 2012-09-24T08:11:32.470 回答
2

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

于 2012-09-24T08:13:11.843 回答
0

伙计,您的 excel 值不是日期。去掉开头的等号。

完成此操作后,您将获得适当的双精度值(可以通过 OADate 函数进行转换)。你现在得到的都是废话。

于 2016-05-07T06:52:01.820 回答