我有一个.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时也会受到损坏
答案 0 :(得分:8)
尽管记住这一点http://xkcd.com/1179/
最后,我决定在所有CSV文件中使用格式YYYYMMDD
,这些格式在Excel中不会转换为日期,但我们所有的应用程序都可以正确读取。
答案 1 :(得分:8)
您可以按照以下步骤将所需的日期格式从Excel保存到.csv,希望excel专家可以进一步优化并减少步骤数:
例如,在您的示例中,如果您的日期位于A列,则此新列的第1行中的值将为:
= TEXT(A1," dd / mm / yyyy")
在现有日期列旁边插入空白栏DATE_NEW。
使用"粘贴为值"将DATE_TMP的内容粘贴到DATE_NEW中选项。
删除DATE_TMP和您现有的日期列,将DATE_NEW重命名为旧日期列。
另存为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。