如何使用Pandas仅读取Excel工作簿中的可见工作表?
解决方案
你写的两段代码存在两处核心错误:
- 第一段代码:遍历获取到sheet对象后,错误将整个
sheets列表追加到结果中,而非当前可见sheet的名称;且最终你要拿到的是表名才能给pandas读取,不是sheet对象 - 第二段代码:
xl.sheet_names返回的是字符串类型的工作表名称列表,字符串本身没有visibility属性,运行会直接报错
以下是可直接运行的正确代码:
import pandas as pd xlFile = '/path/file_name.xlsx' xl = pd.ExcelFile(xlFile) list_of_visible_sheets = [] # 遍历所有sheet对象 for sheet in xl.book.sheets(): # visibility值为0代表可见工作表,1为普通隐藏、2为深度隐藏 if sheet.visibility == 0: # 追加当前可见sheet的名称 list_of_visible_sheets.append(sheet.name) # 打印所有可见工作表名称 print(list_of_visible_sheets) # 如果需要直接读取所有可见工作表为DataFrame,可直接用以下代码生成字典,格式为{表名: 对应df} df_dict = {sheet_name: xl.parse(sheet_name) for sheet_name in list_of_visible_sheets}
补充说明:
- 该方法仅对
.xlsx格式文件有效,如果读取的是.xls格式文件,需要额外安装xlrd库,对应判断逻辑略有差异 - 如果需要用
pd.read_excel批量读取,直接把得到的list_of_visible_sheets传给sheet_name参数即可
内容的提问来源于stack exchange,提问作者Pyari
相关产品推荐
相关产品推荐

