【问题标题】:CSV date formatCSV 日期格式
【发布时间】:2010-09-17 06:10:24
【问题描述】:

我有一个 VB 应用程序,它可以提取数据并创建 3 个 CSV 文件(a.csv、b.csv、c.csv)。然后我使用另一个 Excel 电子表格 (import.xls) 将上述 CSV 文件中的所有数据导入到此工作表中。

import.xls 文件有一个宏,可以一一打开 CSV 文件并复制数据。我面临的问题是 CSV 文件中的日期存储为 mm/dd/yyyy,并按原样复制到 Excel 工作表中。但我想要 dd/mm/yyy 格式的日期。

当我手动打开任何 CSV 文件时,日期会以正确的格式 (mm/dd/yyyy) 显示。知道如何解决这个问题吗?

【问题讨论】:

    标签: excel csv vba


    【解决方案1】:

    当我遇到这个问题时,我通常将日期写为 yyyy-mm-dd,Excel 会明确地解释它。

    【讨论】:

    • 这是此处推荐的最强大的解决方案。 Excel 和 VBA 与系统语言环境交互的方式非常不透明,很容易得到奇怪的结果。使用这种方法可以避免大量代码,通常不会对用户造成问题。
    【解决方案2】:

    您可以使用格式化 VBA函数:

    Format(DateText, "dd/mm/yyyy")
    

    这将是你喜欢的格式。

    要获得更持久的解决方案,请尝试在 Windows 本身中更改区域设置,Excel 将其用于日期格式。

    开始 -> 设置 -> 控制面板 -> 区域选项。

    确保将语言设置为适当的语言,并且日期设置符合您的要求

    【讨论】:

    • 记录数多,import.xls里面的sheet很多。还有其他方法可以自动完成吗?
    • 我刚刚编辑了这篇文章,看看自己改变windows设置
    • 对不起,我错过了提及这一点。区域设置正确且符合预期。谢谢
    【解决方案3】:

    首先,其他答案都很好,但还有一些您可能会觉得有帮助的更多信息

    CSV 文件仅包含文本。也就是说,数据不是日期格式,而是文本格式。因此,当您在 Excel 中打开 CSV 文件时,Excel 默认会为您解释该数据。它不必。您可以强制将其保留为文本,或者如 Mark 所述,您可以将代码添加到您的导入宏中,为您更改它。 如果您想要一个自动化的过程,那么这是最好的解决方案。只需将 VBA 中的代码添加到将所需日期格式应用于包含日期数据的列的宏中。 或者,您可以在打开文件并粘贴数据后手动执行此操作,方法是自己选择列并更改格式。您可以自定义数字格式(选择自定义),然后自己编写。例如 dd/mm/yyyy。

    【讨论】:

    • "因此,当您在 Excel 中打开 CSV 文件时,Excel 默认会为您解释该数据。它不必。您可以强制将其保留为文本"如何强制将其保留为文本?
    • 在您的 CSV 文件中,用引号将其括起来并在前面加上等号,如下所示:="dd/mm/yyyy"
    【解决方案4】:

    我遇到了类似的问题,就这样解决了,本质上是“以上所有”选项

    1. format(date,'dd-mmm-yyyy') 将日期转换为 2-3-4 格式 例如 2008 年 8 月 1 日,计算机不行 错误 01-aug 为 08-jan :-)
    2. 因为在 excel 中复制了这个 自动将其还原为 日期/时间格式,转换结果 在字符串上使用cstr 功能在 1
    3. 格式化包含日期的单元格 被复制为文本(如果你不这样做, 像 excel 一样笨拙,它会 再次将其转换回日期/时间
    4. 将工作表另存为 csv 文件,然后 在记事本中打开以确认它有 工作过

    有些人可能会说这有点矫枉过正,但最好是为了安全起见,而不是让用户在一年后给我打电话并告诉我它对日期做了一些奇怪的事情

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多