【问题标题】:How can I stop Excel from formatting values such as 10-3 as a date?如何阻止 Excel 将 10-3 等值格式化为日期?
【发布时间】:2017-08-17 17:51:09
【问题描述】:

我有一个创建 CSV 文件的 Python 脚本,其中一列具有 4-10, 10-0, etc 等值。

当我在 Excel 中打开 CSV 时,它会将这些值格式化为日期,例如 4-Oct。当我转到Format Cells 并将类型更改为Text 时,它会将4-10 更改为43012。

阻止这种情况的最简单方法是什么?

【问题讨论】:

  • 您能分享在 CSV 中创建这些值的 Python 代码示例吗?
  • 最简单?停止使用 Excel。它还删除了前导零
  • 试试:output.write('"{0}\t","{1}\t","{2}\t"\n'.format(value1, value2, value3))

标签: excel date csv formatting


【解决方案1】:

当您将数据导入 Excel 时,告诉 导入向导 该字段是 Text。

【讨论】:

  • 我并没有真正将数据导入 excel,我只是打开了 CSV 文件。那么,我应该打开一个空白的 Excel 文档并导入 CSV 文件吗?
  • 正是我想要的!太笨了,excel不允许您在打开文件时关闭日期....您的回答非常有帮助,谢谢!
【解决方案2】:

我的偏好是尽可能处理输入,在这种情况下,如果您可以控制 python 脚本,最好简单地修改 that,以便 Excel 的默认行为解释以所需的方式保存文件。

借用this similar question with a million upvotes,你可以修改你的python脚本来包含一个非打印字符:

output.write('"{0}\t","{1}\t","{2}\t"\n'.format(value1, value2, value3))

这样,您可以轻松双击打开文件,内容将被视为文本,而不是解释为数字/日期值。

这样做的好处是其他用户不必记住使用该向导,并且处理混合数据也可能更容易。

例子:

def writeit():
    csvPath = r'c:\debug\output.csv'
    a = '4-10'
    b = '10-0'
    with open(csvPath, 'w') as f:
        f.write('"{0}\t","{1}\t"'.format(a,b))

在文本编辑器中生成以下文件:

当在 Excel 中双击打开时:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 2012-03-31
    • 2020-03-26
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多