2016-07-06 146 views
-1

我有几个Excel文件,其中有10个工作表其他8个。在我的代码中,我循环遍历所有文件并选择一个2到9的表单范围。但是,由于我有一些8个工作簿我希望在这些工作簿中执行相同的循环或操作,而不是获取“sheets = wb.worksheets [n] IndexError:列表索引超出范围”。我可以使用elif来完成这个任务吗?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

'try:foo();除了:通过脏,但你可以尝试 – ihsancemil

回答

2

if...elif并非完全必要。

您可以使用itertools.isliceSheets

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