如何通过openpyxl获取Excel含公式单元格的实际值而非公式文本
解决方案
方案1:使用openpyxl(轻量无额外软件依赖)
openpyxl默认读取单元格的原始内容(包含公式文本),只需在加载工作簿时指定data_only=True参数,即可直接读取Excel上次保存时生成的公式计算缓存值:
import openpyxl # 加载工作簿时开启data_only参数 wb = openpyxl.load_workbook("你的文件路径.xlsx", data_only=True) working_sheet = wb["你要操作的工作表名称"] # 原有读取逻辑不需要修改,此时拿到的就是公式计算值 cell_value = working_sheet.cell(row=row_number, column=column_number+1).value
注意:如果读取公式单元格返回None,说明该文件没有保存过公式计算缓存,只需用桌面版Excel/WPS打开该文件,无需做任何修改直接保存后再运行代码即可正常取值。
方案2:使用xlwings(支持实时计算无缓存的公式)
如果无法提前打开文件生成缓存,可使用xlwings调用本地安装的Excel/WPS进程,实时计算所有公式的结果:
import xlwings as xw # 后台启动Excel进程,不显示界面 with xw.App(visible=False, add_book=False) as app: wb = app.books.open("你的文件路径.xlsx") working_sheet = wb.sheets["你要操作的工作表名称"] # 直接读取单元格即可拿到实时计算值 cell_value = working_sheet.range(row_number, column_number+1).value wb.close()
注意:该方案需要本地设备已安装Excel或WPS软件。
内容的提问来源于stack exchange,提问作者Kerpol
相关产品推荐
相关产品推荐

