在Excel XML工作表中格式化date时间

使用ASP.NET生成Excel XML工作簿时,我将在一行中追加3个单元格,如下所示:

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是必须在Excel中以单元格DateTime结尾的C#date时间。

所以

来自VS2010中的debugging在组装中的值:

  2011-08-15T01:16:06.8470000 

excel中的值:

  40761,2299142361 

手动转换单元格后:

  6-08-11 5:31 

但是, 在Excel中将其输出转换为数字时单元格格式设置为自定义 。 当我手动更改单元格格式返回到DateTime正确? date以正确的格式显示。 但是,当然,企业不会接受这样一个原始数据,他们必须转换自己;)

也许我正在使用错误的StringFormat?

在这种情况下写入DateTime的正确格式是什么,并以正确的DateTime格式在Excel中输出?

是的,您使用的是“错误的”string格式,即Excel不能自动识别(或适当地parsing)date的格式。 放下T 此外,Excel中的date – 时间格式至less要毫秒,如果不是整数秒,那么您还可以放弃一些小数位。

这应该工作:

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