我有几个Excel文件,其中一些有10个工作表,其他有8个。在我的代码中我循环浏览所有文件并选择2到9的工作表范围。但是,因为我有一些8张工作簿我想做这些工作簿中的相同循环或操作,而不是获取“sheet = wb.worksheets [n] IndexError:列表索引超出范围“。我可以用elif来完成这个吗?
import glob
import openpyxl
path = 'C:/ExcelFolder/*.xlsx'
files = glob.glob(path)
for file in files:
wb = openpyxl.load_workbook(file)
Sheet = wb.worksheets
if Sheet is range(2, 9):
for n in range(2, 9):
sheets = wb.worksheets[n]
#Do something
elif Sheet is range(2, 5):
for n in range(2, 5):
sheets = wb.worksheets[n]
#Do something
答案 0 :(得分:2)
if...elif
并非完全必要。
您可以使用itertools.islice
切片 Sheets
:
from itertools import islice
for file in files:
wb = openpyxl.load_workbook(file)
Sheets = wb.worksheets
for sheet in islice(Sheets, 2, 9):
# do something with sheet
如果Sheets
长度不超过9
,则迭代将停留在Sheets
的长度,例如5
。