2011-06-22 19 views
1

當生成與ASP.NET即時追加3個細胞在一排像的Excel工作簿XML:格式日期時間在Excel工作表XML

sb.Append(String.Format(
"<Cell><Data ss:Type=\"DateTime\">{1}</Data></Cell>{0}", 
Environment.NewLine, 
item.DateAvailable.ToString("yyyy-MM-ddTHH:mm:ss.fffffffK") 
)); // newlines added for readability; 

item.DateAvailable是C#DateTime具有在Excel中結束爲細胞的DateTime。

所以

從調試

值在VS2010在asssembly:

6-08-11 5:31 

:所述單元格的格式的手動轉換後

40761,2299142361 

:在Excel

2011-08-15T01:16:06.8470000  

值何wever,在轉換時,它在excel中輸出的數字爲,而單元格格式設置爲自定義。當我手動將單元格格式更改回DateTime時,正確的是?日期以正確的格式顯示。但當然,業務不會接受這樣的原始數據,他們必須自己轉換;)

也許我使用了錯誤的StringFormat?

在這種情況下寫入日期時間的正確格式是什麼,並以正確的日期時間格式在Excel中輸出?

回答

5

是的,您正在使用「錯誤的」字符串格式,即Excel不會自動識別(或適當地解析)日期的格式。丟掉T。此外,Excel中的日期 - 時間格式至少會縮短到毫秒,如果不是整數秒,那麼您還可以放棄其中的一些小數位。

這應該工作:

item.DateAvailable.ToString("yyyy-MM-dd HH:mm:ss.ffff") 
+0

由於它的工作原理;) –

+1

我發現它不會沒有 'T' 的工作。即time.ToString(「yyyy-MM-ddTHH:mm:ss.ffff」)*聳聳肩* – ensignr