Pandas读取含公式的Excel子工作表返回空DataFrame问题求助
根因说明
- Pandas
read_excel方法默认读取Excel单元格已缓存的计算值,若带公式的工作表未将计算结果写入文件缓存,读取时就会返回空值或空DataFrame - 此前运行正常后续出现异常,通常是该Excel文件最近被编辑/生成时,未触发公式计算直接保存,或关闭了Excel的「保存公式计算结果」配置
解决方案
方案1:修复Excel文件(最快生效)
打开Reports Database.xlsx执行以下操作:
- 进入「文件」-「选项」-「公式」设置页
- 勾选「自动计算」选项
- 按
F9手动触发全表公式计算 - 保存文件后重新运行原有代码即可恢复正常
方案2:代码端强制计算读取(无需修改Excel文件)
使用openpyxl加载工作簿时主动计算所有公式,再转成DataFrame:
import os import pandas as pd from openpyxl import load_workbook db_location = os.path.join(os.getcwd(), "Reports Database.xlsx") # 加载时自动计算所有公式,仅读取计算后的值 wb = load_workbook(db_location, data_only=True, calculate_load=True) # 提取指定工作表数据生成DataFrame ws = wb[company] df = pd.DataFrame(ws.values) # 可选:如果工作表第一行是表头,执行以下代码设置列名 df.columns = df.iloc[0] df = df[1:].reset_index(drop=True)
方案3:调整read_excel引擎参数
若你使用的Pandas版本≥1.3,可优先尝试更换读取引擎,大部分场景下可直接兼容读取公式计算结果:
db_location = os.getcwd()+"\\Reports Database.xlsx" df = pd.read_excel(db_location, sheet_name=company, engine="openpyxl")
注意:旧版xlrd引擎对xlsx格式的公式支持极差,必须指定openpyxl引擎读取带公式的xlsx文件
内容的提问来源于stack exchange,提问作者Rafek Gorgay
相关产品推荐
相关产品推荐

