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

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

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

在Excel中打开你看到:

20/01/2013 01/05/2013 

另存为… CSV

在记事本中打开:

 01/20/2013 05/01/2013 

我已经通过将date格式设置为“14/03/2001”(no *)进行了临时修复,但是甚至一些其他没有*的自定义格式,比如“d / mm / yyyy h:mm”

虽然记住这一点http://xkcd.com/1179/

最后,我决定在所有的CSV文件中使用YYYYMMDD格式,这些文件不能在Excel中转​​换成date,但是可以正确读取所有的应用程序。

您可以按照以下步骤将所需date格式从Excel保存到.csv,希望excel专家能够进一步细化并减less步骤数量:

  1. 创build一个新的DATE_TMP列,并将其设置为= TEXT(oldcolumn,“date-format-arg”)公式。

例如,在你的例子中,如果你的date是在列A中,这个新列的第一行的值是:

= TEXT(A1,“dd / mm / yyyy”)

  1. 在现有date列旁边插入一个空白列DATE_NEW。

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

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

  4. 另存为csv。

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

我认为,当Excel CSV文档谈到操作系统和区域设置被解释时,这意味着Excel将在打开文件(这是它们的“特殊”csv格式)时这样做。 看到这篇文章, “Excel格式和function不转移到其他文件格式”

此外,Excel实际上是存储一个数字,并转换为datestring只显示。 当它导出到CSV时,它会将其转换为不同的datestring。 如果您希望该datestring是非默认的,则在执行导出之前,需要将Excel单元格转换为string。

或者,您可以将date转换为Excel保存的数字值。 因为这是一个时间码,所以假设你正确导入它,它实际上会遵守操作系统和区域设置。 记事本将只显示你的10位数字,但。

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

至less它工作。

在date前放置一个撇号,它应该以正确的格式导出。 刚刚发现了我自己,我发现这个线程寻找答案。

如果您使用自定义格式,而不是预先select的date格式之一,则导出为CSV将保留您select的格式。 否则,它默认回到美国格式

一个不太可扩展的修复程序,我用它来复制数据到纯文本编辑器,将单元格转换为文本,然后将数据复制回电子表格。

将date范围更改为“常规”格式并保存工作簿一次,并在保存并closures书籍之前将其更改回date格式(例如,numberformat =“d / m / yyyy”)。 savechanges参数为true。