代码之家  ›  专栏  ›  技术社区  ›  Yin Zhu

如何禁用Excel对数字和文本的自动识别

  •  9
  • Yin Zhu  · 技术社区  · 15 年前

    我用python生成了一个csv文件。但当我在Excel中打开它时,如果可以转换,Excel会自动将字符串识别为数字。

    例如 33E105 变成 33*10^105 ,实际上是一个ID,而不是一个数字。

    如何在打开csv文件时在Excel中禁用此功能?或者我需要使用Excel python库来输出Excel文件并自己指定格式?

    我还发现了一个 similar question 网络上没有好的答案。

    谢谢!

    5 回复  |  直到 15 年前
        1
  •  1
  •   Alex Martelli    15 年前

    写实 .xls 在python中的文件,而不是 .csv 那些优秀的人可能会误解,你可以使用 xlwt 第三方python包。

        2
  •  4
  •   Zachary Scott    15 年前

    您可以在它前面加上一个单引号,强制它加上文本。

    一个有趣的答案是,您可以保持前八行空白(它只处理前八行以确定数据类型),尽管我认为这可能会完全空白您的所有数据。你可以隐藏那些空行。

        3
  •  3
  •   DVK    15 年前

    您有3个选项:

    • 输出一个Excel可以读取的特殊格式的XML文件。我不记得任何细节,但如果有兴趣,我可以把它们挖出来。我们用Perl代码做到了这一点。我不知道excel python是否能做到这一点。

    • 地点 ' (撇号)在每个字符串之前。

    • 使用输出具有正确格式的本机Excel文件的库。对于python来说,这是不可能的,但它是任何情况下第一个选项的过度杀戮变体。

        4
  •  2
  •   John La Rooy    15 年前

    我想你可以放一个单人间 ' 在前面停止将数字字符串转换为整数

    如。

    ...,"'33E105",...
    

    OpenXML是一个更灵活(也更复杂)的选项,但只适用于Office2003或更高版本,对于这个问题来说是多余的。更适合需要突出显示单元格/多页等的情况。

        5
  •  0
  •   user210748    15 年前

    如果不想更改csv文件的编写方式,可以使用Excel中的文本导入向导指定如何处理各个列。向导中有一个步骤可以让您选择每列中的数据类型。设置要作为文本的列,该列将作为字符串处理。