如何使用Python包读取Excel文件并获取单元格值而非公式
Python读取Excel单元格实际值(非公式)实现方案
方案1:openpyxl库(适用于xlsx格式)
openpyxl是常用的xlsx文件处理库,默认读取会返回公式,需在加载文件时开启data_only参数获取计算后的值。
- 安装命令:
pip install openpyxl - 代码示例:
from openpyxl import load_workbook # 加载文件时指定data_only=True,读取单元格预计算后的存储值 wb = load_workbook("测试文件.xlsx", data_only=True) # 选择指定工作表 ws = wb["Sheet1"] # 读取单个单元格值 print(ws["A1"].value) # 遍历所有单元格取值 for row in ws.iter_rows(values_only=True): print(row)
- 注意事项:
- 需保证Excel文件曾被Office/WPS等办公软件打开并保存过,否则公式未完成预计算,
data_only=True会返回None - 仅支持
.xlsx格式文件,不兼容旧版.xls格式
- 需保证Excel文件曾被Office/WPS等办公软件打开并保存过,否则公式未完成预计算,
方案2:pandas库(适用于批量数据读取)
pandas内置的Excel读取方法默认会返回单元格计算后的实际值,不需要额外处理公式,适合批量处理表格数据的场景。
- 安装命令:
pip install pandas openpyxl - 代码示例:
import pandas as pd # 直接读取即可返回实际值,无需额外参数 df = pd.read_excel("测试文件.xlsx", sheet_name="Sheet1") print(df)
- 注意事项:
- 若需要读取
.xls格式文件,需额外安装低版本xlrd:pip install xlrd==1.2.0(更高版本xlrd已取消对xls格式的支持)
- 若需要读取
方案3:xlwings库(适用于未预计算的Excel文件)
如果Excel文件的公式从未被办公软件计算过,前两种方案无法获取值时,可以用xlwings调用本地办公软件实时计算公式,返回准确结果。
- 安装命令:
pip install xlwings - 代码示例:
import xlwings as xw # 后台启动Excel程序,不弹出界面 app = xw.App(visible=False, add_book=False) wb = app.books.open("测试文件.xlsx") ws = wb.sheets["Sheet1"] # 读取单个单元格值 print(ws.range("A1").value) # 读取整个工作表的已使用区域数据 print(ws.used_range.value) # 用完关闭资源,避免后台残留Excel进程 wb.close() app.quit()
- 注意事项:
- 依赖本地安装的Office/WPS软件,不适用于无桌面环境的服务器
- 读取速度慢于前两种方案,仅适合公式复杂、小批量读取的场景
内容的提问来源于stack exchange,提问作者MOSES NOKNAN JOHN
相关产品推荐
相关产品推荐

