【问题标题】:Formatting issue of datetime while exporting to Excel导出到 Excel 时日期时间的格式问题
【发布时间】:2014-05-16 07:54:52
【问题描述】:

我正在我的 asp.net 应用程序中执行导出到 Excel 过程。

在此过程中,我使用以下代码将 DateTime 值写入 Excel:

string reqDate = item.requestedDate.ToString("MM/dd/yyyy hh:mm:ss tt");
Response.Write(reqDate + "\t");

但 excel 文件中的结果缺少日期时间中的 second 部分,如下所示:

4/3/2014 17:05

我希望它看起来像 04/03/2014 05:05:19 PM

如何做到这一点?

请帮忙。

【问题讨论】:

  • 您的item.requestedDate 价值到底是什么?您目前的文化是什么?
  • 它的值是 04/03/2014 05:05:19 PM 。我想显示相同
  • 您好,先生,我也面临同样的问题。如果你得到答案,请写在这里

标签: c# asp.net export-to-excel datetime-format export-to-csv


【解决方案1】:

看起来您正在导出为 CSV,而不是 Excel。 Excel 读取 CSV,识别 DateTime,并使用其默认的文化特定格式对其进行格式化。

如果要强制将其格式化为文本,请查看this question的答案。

或者,您可以考虑使用 EPPlus 或 Aspose Cells 等工具而不是 CSV 生成真正的 Excel 文件。

【讨论】:

    【解决方案2】:

    此问题是由 Excel 如何解析 CSV 文档中的 DateTime 引起的。更具体地说,如果 DateTime 的 Day 属性小于或等于 12。

    在您的示例 (04/03/2014)Day <= 12 中,Excel 会以您不想要的方式对其进行格式化。但是对于带有 Day > 12 的 DateTime(例如 2014 年 4 月 23 日),Excel 会按照您的预期对其进行格式化。

    让 DateTime 在 Excel 中按需要显示的技巧是将它们包装在 Excel 公式中,如下所示:="04/03/2014 05:05:19 PM"

    if (item.requestedDate.Day <= 12)
        Response.Write("=\"" + item.requestedDate.ToString("MM/dd/yyyy hh:mm:ss tt") + "\"");
    

    【讨论】:

    • 在这个例子中,是不是把数据类型改成自定义(字符串)?所以按日期排序会失败。我遇到了以 0 开头的字符串和 Excel 假定整数的字符串。添加 ' + value 输出正确,但仍然排序不正确。
    • @Anthony 是的,输出是字符串文字,这可能导致意外排序。一种解决方法可能是使用“最重要到最不重要”的格式,例如“yyyy/MM/dd hh:mm:ss tt”。
    猜你喜欢
    • 2020-12-04
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多