如何用Pandas读取Excel指定单元格?及OpenPyXL读取值问题
解决Excel指定单元格读取问题
一、修正Pandas代码的错误
pd.read_excel()返回的是DataFrame对象,不是OpenPyXL那样的工作簿实例,所以不存在.active属性。要读取H6单元格,可通过以下两种方式实现:
通过行列索引定位(Excel行列从1开始,DataFrame从0开始计数):
import pandas as pd excel_file = './docs/fruit.xlsx' df = pd.read_excel(excel_file, sheet_name='Overzicht') # H列对应第7个列索引,6行对应第5个行索引 x1 = df.iloc[5, 7] print(x1)通过列名和行标签定位(适用于工作表有表头的情况):
假设H列的表头为对应的名称,比如"目标列",则:x1 = df.loc[5, "目标列"]
二、修正OpenPyXL代码的问题
你的代码存在两个问题:一是列索引写错(H列是第8列,你写的column=9对应I列);二是默认加载工作簿时只会读取公式本身,不会读取计算后的值。修正后的代码如下:
import openpyxl path = "./docs/fruit.xlsx" # 设置data_only=True,读取公式计算后的结果 wb_obj = openpyxl.load_workbook(path, data_only=True) # 直接指定目标工作表,避免依赖默认活跃表 sheet_obj = wb_obj['Overzicht'] # H6对应row=6,column=8 cell_obj = sheet_obj.cell(row=6, column=8) print(cell_obj.value)
注意:data_only=True只能读取Excel文件最后一次保存时已计算好的值,如果文件关闭前没保存公式计算结果,可能会返回None或公式本身,需确保文件保存时已完成公式计算。
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

