【问题标题】:Formatting DateTime in Excel XML worksheet在 Excel XML 工作表中格式化日期时间
【发布时间】:2011-06-22 09:01:27
【问题描述】:

使用 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 是 C# DateTime,在 Excel 中必须以单元格日期时间结尾。

所以

VS2010 中调试的值:

 2011-08-15T01:16:06.8470000    

excel中的值:

 40761,2299142361

手动转换单元格格式后:

 6-08-11 5:31

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

也许我使用了错误的 StringFormat?

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

【问题讨论】:

    标签: c# asp.net excel


    【解决方案1】:

    是的,您使用的是“错误”的字符串格式,即 Excel 不会自动识别(或正确解析)为日期的格式。删除T。此外,Excel 中的日期时间格式至少四舍五入到毫秒,如果不是整数秒,所以你不妨去掉一些小数位。

    这应该可行:

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

    【讨论】:

    • 我发现没有“T”是行不通的。即 time.ToString("yyyy-MM-ddTHH:mm:ss.ffff") 耸耸肩
    猜你喜欢
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2016-01-05
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多