关于如何阻止 Excel 将文本解释为数字,或如何使用 openpyxl 输出数字格式存在许多问题,但我还没有看到任何解决此问题的方法:
我有一个别人给我的 Excel 电子表格,所以我没有创建它。当我用 Excel 打开文件时,我有某些值,如“5E12”(克隆数字,如果有人关心的话)似乎正确显示,但每个值旁边都有一个绿色小箭头警告我“这似乎是一个数字存储为文本”。Excel 然后询问我是否要将其转换为数字,如果我看到是,我得到 5000000000000,然后它会自动转换为科学计数法并再次显示 5E12,只有这一次文本输出会显示带有零的完整数字. 请注意,在转换之前,这实际上是文本,甚至是 Excel,我只是被警告/提供转换它。
因此,当使用 openpyxl(从 openpyxl.reader.excel 导入 load_workbook)读取此文件时,5E12 会自动转换为 5000000000000。我假设 openpyxl 与 Excel 所做的假设相同,只有转换发生时没有提示或我的输入。
我怎样才能防止这种情况发生?我不希望看起来像“存储为文本的数字”的文本转换为数字。除非我这么说,否则它们是文本。
到目前为止,我发现的唯一解决方案是在每个单元格的前面添加单引号,但这不是一个理想的解决方案,因为它是手工劳动而不是编程解决方案。此外,解决方案必须是通用的,因为我并不总是知道这个问题可能发生在哪里(我每天要阅读数百万行,所以我不想手动做任何事情)。
我认为这是 openpyxl 的问题。2011 年初有一个谷歌小组讨论提到了这个问题,但认为它太罕见了。https://groups.google.com/forum/?fromgroups=#!topic/openpyxl-users/HZfpShMp8Tk
那么,有什么建议吗?