2012-09-24 49 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函數轉換)。你現在得到的是無稽之談。

相關問題