openpyxl读取Excel单元格输出公式而非实际值的解决咨询
问题原因
openpyxl默认仅读取Excel文件中存储的原始内容,不会自动运行公式计算。你拿到公式而非预期数值,是因为当前读取的Excel文件没有保存公式对应的缓存计算结果。
解决方案
方案1:读取时直接调取已缓存的计算结果
如果你的Excel文件曾经正常打开、保存过,已经有公式的计算缓存,可以在加载工作簿时指定data_only=True直接读计算值,修改后代码如下:
import pandas as pd from openpyxl import load_workbook # 先手动加载工作簿,开启data_only参数读取计算后的值 wb = load_workbook('Wages.xlsx', data_only=True) writer = pd.ExcelWriter('Wages.xlsx', engine="openpyxl", mode ="a") # 将手动加载的工作簿绑定到writer writer.book = wb ws2 = wb["Living Wages"] print(ws2.cell(row=2, column= 2).value)
注意:如果Excel修改过内容但没重新打开计算保存,该方法可能读取到空值,需要使用方案2。
方案2:主动触发公式计算
如果文件没有保存计算缓存,可以调用openpyxl内置的计算引擎运行公式后再取值:
import pandas as pd from openpyxl import load_workbook wb = load_workbook('Wages.xlsx') # 触发全表公式计算 wb.calculate() writer = pd.ExcelWriter('Wages.xlsx', engine="openpyxl", mode ="a") writer.book = wb ws2 = wb["Living Wages"] print(ws2.cell(row=2, column= 2).value)
注意:openpyxl内置计算引擎仅支持常用Excel公式,自定义函数、复杂数组公式可能无法正常计算。
内容的提问来源于stack exchange,提问作者sendhelppls
相关产品推荐
相关产品推荐

