如何禁用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。