使用openpyxl读取Excel单元格时获取计算结果而非公式的方法
解决openpyxl读取公式而非计算结果的问题
在使用openpyxl加载工作簿时,默认会读取单元格的公式内容,要获取计算后的实际数值,只需在load_workbook中添加data_only=True参数即可。修改后的代码如下:
from openpyxl import load_workbook # 打开Excel工作表,添加data_only=True参数读取计算结果 workbook = load_workbook(filename="filename.xlsx", data_only=True) sheet = workbook.active # 打印第5行第3列(即C5单元格)的计算结果 print(sheet.cell(row=5, column=3).value)
注意:data_only=True读取的是Excel文件最后一次保存时已计算好的结果,如果文件中的公式从未在Excel中计算保存过,可能返回None,此时需要先手动打开Excel保存一次,或者使用支持实时计算公式的库。
适合操作Excel的Python库推荐
- pandas:如果你的核心需求是表格数据的分析、清洗或转换,pandas是首选。它底层依赖
openpyxl或xlrd读取文件,会自动读取计算后的数值,代码更简洁:
import pandas as pd df = pd.read_excel("filename.xlsx") # 获取C5单元格对应的值(pandas行索引从0开始,C列对应第2列,第5行对应索引4) print(df.iloc[4, 2])
- xlwings:适合需要与Excel程序直接交互的场景,支持实时计算公式、操作宏、修改样式等,功能更贴近手动操作Excel的体验:
import xlwings as xw # 启动Excel程序并打开文件 wb = xw.Book("filename.xlsx") sheet = wb.sheets.active # 直接获取C5单元格的计算结果 print(sheet.range("C5").value) wb.close()
- xlrd/xlwt:
xlrd主要用于读取旧版.xls格式文件(新版已不再支持.xlsx),xlwt用于写入.xls文件,适合处理老旧格式的Excel文件场景。
内容的提问来源于stack exchange,提问作者Alooy DaBoss
相关产品推荐
相关产品推荐

