在Excel中保存为CSV会丢失区域日期格式

时间:2013-02-07 23:08:46

标签: excel csv export-to-csv

我有一个.xls我需要转换为.csv

该文件包含一些日期列。日期格式为“* 14/03/2001”,根据Excel表示日期响应为操作系统指定的区域日期和时间设置。

在Excel中打开,您会看到:

20/01/2013
01/05/2013

另存为... CSV

在记事本中打开:

01/20/2013
05/01/2013

我通过将日期格式设置为“14/03/2001”(no *)暂时修复,但即使是其他一些没有*的自定义格式,例如“d / mm / yyyy h:mm”在保存为CSV时也会受到损坏

8 个答案:

答案 0 :(得分:8)

尽管记住这一点http://xkcd.com/1179/

最后,我决定在所有CSV文件中使用格式YYYYMMDD,这些格式在Excel中不会转换为日期,但我们所有的应用程序都可以正确读取。

答案 1 :(得分:8)

您可以按照以下步骤将所需的日期格式从Excel保存到.csv,希望excel专家可以进一步优化并减少步骤数:

  1. 创建一个新列DATE_TMP并将其设置为= TEXT(oldcolumn," date-format-arg")公式。
  2. 例如,在您的示例中,如果您的日期位于A列,则此新列的第1行中的值将为:

    = TEXT(A1," dd / mm / yyyy")

    1. 在现有日期列旁边插入空白栏DATE_NEW。

    2. 使用"粘贴为值"将DATE_TMP的内容粘贴到DATE_NEW中选项。

    3. 删除DATE_TMP和您现有的日期列,将DATE_NEW重命名为旧日期列。

    4. 另存为csv。

答案 2 :(得分:5)

在日历设置下以“短日期”格式更改计算机的日期和时间设置。这将改变所有yyyy-mm-dd的格式,或者你想要它显示的格式;但请记住,即使是保存在计算机上的文件也会如此。

至少它有效。

答案 3 :(得分:4)

您需要做的工作多于1.单击导出2.打开文件。

我认为当Excel CSV文档谈到正在解释的操作系统和区域设置时,这意味着Excel会在打开文件时执行此操作(以“特殊”csv格式)。请参阅此文"Excel formatting and features are not transferred to other file formats"

此外,Excel实际上是存储一个数字,并仅转换为日期字符串以供显示。当它导出到CSV时,它将它转换为另一个日期字符串。如果您希望该日期字符串为非默认值,则需要在执行导出之前将Excel单元格转换为字符串。

或者,您可以将日期转换为Excel保存的数字值。由于这是一个时间代码,它实际上将服从操作系统和区域设置,假设您正确导入它。不过,记事本只会显示10位数字。

答案 4 :(得分:2)

如果您使用的是自定义格式,而不是其中一种预先选择的日期格式,则导出为CSV将保留您选择的格式。否则,它默认返回美国格式

答案 5 :(得分:1)

在日期前放置一个撇号,它应以正确的格式导出。刚刚找到了我自己,我发现这个帖子正在寻找答案。

答案 6 :(得分:0)

我用于此的不太可扩展的修复方法是将数据复制到纯文本编辑器,将单元格转换为文本,然后将数据复制回电子表格。

答案 7 :(得分:0)

将日期范围更改为" General"格式化并保存工作簿一次,并在保存之前将其更改为日期格式(例如numberformat = "d/m/yyyy")。合上书本。 savechanges参数为true。