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

我用Python来生成一个CSV文件。 但是,当我在Excel中打开它时,Excel会自动将一个string识别为一个数字,如果它可以被转换。

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

如何在打开CSV文件时在Excel中禁用此function? 或者我需要求助于一个excel-python库来输出一个excel文件并指定自己的格式?

我也在网上find了一个没有很好答案的类似问题 。

谢谢!

要用Python编写实际的.xls文件,而不是Excel可能误解的.csv文件,可以使用xlwt第三方Python包。

你可以在它之前加一个单引号,强制它为文本。

一个有趣的答案是你可以保持前八行为空(它只处理前八行来确定数据types),但我认为这可能会完全清空所有的数据。 你可以隐藏这些空行。

你有3个选项:

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

  • 在每个string之前放置(撇号)。

  • 使用一个输出本机Excel文件格式正确的库。 没有线索,如果这样的Python存在,但它是在任何情况下的第一个选项矫枉过正的变种。

我认为你可以把一个单独的'在前面”来阻止数字string变成整数

例如。

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

OpenXML是一个更灵活(也是更复杂)的选项,但只适用于Office2003或更新版本,并且对于这个问题是过度的。 当需要突出显示单元格/多个表格时,更适合您的情况

如果您不想更改如何编写CSV文件,则可以使用Excel中的文本导入向导指定如何处理各个列。 向导中有一个步骤可让您select每列中的数据types。 设置你想要的文本列,并将其视为一个string。