本帖最后由 MyModHeaven 于 2024-10-8 20:47 编辑
如题。
以openpyxl为例。
众所周知,当存在公式时,openpyxl.reader.excel.load_workbook(filename, read_only=False, keep_vba=False, data_only=False, keep_links=True, rich_text=False) 中的可选参数data_only 要设置为True ,这样才能读取公式的结果,而不是读取到=A1-A2 这样的公式。
如果,一直只是简单的读取数据,或许并没有调用wb.save() 。当同一个文件多次打开,并且同时涉及读取和写入的时候,wb.save() 就带来的一点麻烦:python告诉你有公式的单元格的值都为空,手动打开excel文件却发现有值,并且公式也没消失。
昨晚困扰我好长时间,睡前还带来一个坏情绪。本来是在修改旧代码,发现这个问题后,一开始以为屎山代码让我搞崩塌了,后来以为碰见bug了,一度想重启电脑(听说重启电脑能解决99%的问题)。
今天晚上搜了一下才发现,这是一个客观存在的问题,了解到原因后,我想,但凡是没经验、第一次碰到这个问题的人,都不会想到原因吧。
而且,这个问题貌似是通病,无论用openpyxl、pandas还是其他的啥库。
详情见:
https://blog.csdn.net/u013541325/article/details/108246829
https://blog.csdn.net/weixin_45903952/article/details/105073611
我试了一下手动打开,然后关闭,还是读不了。原来是打开之后,需要保存一下再关闭,python就又能读到了。
|