15

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

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

在 Excel 中打开您会看到:

20/01/2013
01/05/2013

另存为... CSV

在记事本中打开:

01/20/2013
05/01/2013

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

4

8 回答 8

13

您可以按照以下过程将所需的日期格式从 Excel 保存为 .csv,希望 excel 大师可以进一步改进并减少步骤数:

  1. 创建一个新列 DATE_TMP 并将其设置为等于 =TEXT(oldcolumn, "date-format-arg" ) 公式。

例如,在您的示例中,如果您的日期在 A 列中,则此新列的第 1 行中的值将是:

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

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

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

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

  4. 另存为 .csv。

于 2014-12-11T21:18:03.870 回答
13

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

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

于 2014-05-08T00:01:26.747 回答
9

在日历设置下以“短日期”格式更改计算机的日期和时间设置。这将更改所有 yyyy-mm-dd 的格式,或者您希望它显示的任何格式;但请记住,即使对于保存在您计算机上的文件,它也会看起来像这样。

至少它有效。

于 2013-10-22T18:35:46.750 回答
5

您需要做的工作远不止 1. 单击导出 2. 打开文件。

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

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

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

于 2013-02-15T07:21:22.723 回答
5

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

于 2016-08-30T09:50:18.743 回答
1

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

于 2014-06-25T15:17:04.560 回答
0

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

于 2015-12-18T01:23:57.460 回答
0

numberformat = "d/m/yyyy"将日期范围更改为“常规”格式并保存工作簿一次,然后在保存和关闭工作簿之前将其更改回日期格式(例如, )。savechanges参数为真。

于 2017-10-25T03:36:55.410 回答