Python使用load_workbook()读取Excel仅获值失败的问题求助
解决Excel公式计算值读取问题
原因说明
data_only=True 本身不具备公式计算能力,它只能读取Excel软件已经计算完成并保存到文件中的结果。如果你的目标Excel文件从未被Excel或WPS这类兼容软件打开并保存过,文件里根本没有存储公式的计算结果,openpyxl自然读不到你想要的数值。
可行解决方案
方案1:手动预处理Excel文件
- 打开目标Excel文件,等待所有公式计算完成
- 直接保存文件(无需修改内容),再运行你的Python脚本
- 此时
load_workbook(filein, data_only=True)就能正常读取计算后的值
方案2:换用支持公式计算的库
如果没法手动处理文件,可以用以下两种库替代:
- pandas批量读取示例:
适合需要批量读取整表数据的场景。import pandas as pd df = pd.read_excel(filein, engine='openpyxl') # df中存储的就是所有单元格的计算后值 - xlwings调用原生Excel计算示例:
依赖本地安装的Excel软件,计算结果和Excel原生表现完全一致。import xlwings as xw app = xw.App(visible=False) # 后台运行Excel,不显示界面 wb = app.books.open(filein) sheet = wb.sheets[0] target_value = sheet.range('BN121').value # 获取指定单元格的计算结果 wb.close() app.quit()
方案3:用openpyxl配合第三方计算库
可以用openpyxl读取公式,再通过pycel库计算结果:
from openpyxl import load_workbook from pycel import ExcelCompiler wb = load_workbook(filein) compiler = ExcelCompiler(wb) # 计算指定单元格的结果,替换成你的工作表名和单元格位置 target_value = compiler.evaluate('Sheet1!BN121')
无需安装Excel,但对复杂函数的支持可能不如原生Excel。
内容的提问来源于stack exchange,提问作者Roberta Cattaneo
相关产品推荐
相关产品推荐

