python处理excel 隐藏sheet

Python处理excel中,会有这么一种情况,有些sheet是隐藏的 但是使用python循环读取sheet的时候,会把隐藏的sheet也会读入进去,这个就很糟糕
这里有一种方法,可以满足对sheet的要求,并且可以进行循环读取sheet,获取想要的数据
如下图,这是创建的虚拟数据
在这里插入图片描述
一共是两个不隐藏的sheet,其实有5个,隐藏了3个
在这里插入图片描述
这里我们使用python的openpyxl和pandas库,不能使用xlrd库,因为对xlsx不太友好

import openpyxl
import pandas as pd
from openpyxl import load_workbook


filename = './data/test_sheet.xlsx'

'''
可以使用选择sheet选择,进行激活,因为是知道sheet的名字的
所以直接可以使用sheet名字进行激活工作表,再做状态判断
'''
# 分步来写
# 获取所有的sheet
wb = load_workbook(filename)
all_sheet_name = wb.sheetnames
print('这是所有的sheet,包含隐藏的: \n', all_sheet_name)

for sheetname in all_sheet_name:
	if wb[sheetname].sheet_state == 'hidden':
		print('这是隐藏的sheet: \n', sheetname)
	else:
		print('这不是隐藏的sheet: \n', sheetname)

在这里插入图片描述
当然不需要这么麻烦,知识为了演示清楚
获取不隐藏的sheet,并且循环读取展示数据

import openpyxl
import pandas as pd
from openpyxl import load_workbook


filename = './data/test_sheet.xlsx'


wb = load_workbook(filename)
all_sheet_name = wb.sheetnames
# 使用列表推导式取出所有不是隐藏的sheet
useful_sheet = [i for i in all_sheet_name if wb[i].sheet_state != 'hidden']
print('所有不是隐藏的sheet: \n', useful_sheet)
print('======================================')

for i in range(len(useful_sheet)):
	data_i = pd.read_excel(filename, sheet_name=useful_sheet[i])
	print(f'第{i+1}个sheet数据: \n', data_i)
	print('=============================\n')

在这里插入图片描述
需要提醒一下,wb[sheetname]是openpyxl更新的使用sheet的方法,之前的wb.get_sheet_by_name[sheetanme],这个会出现警告,因为随着更新 有好多方法已经进行改变,需要注意下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vergil_Zsh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值