条件检查工作表范围python

时间:2016-07-02 00:08:24

标签: python excel openpyxl

我有一个程序可以解析多个工作簿中包含多个工作表的数据。

表2至9是一周中的几天(周日至周六)。但是,某些纸张具有不同的纸张范围。

有些纸张有2到5张(周一至周五)。其他一切都是相同的只有一些工作簿总共有10张,而其他有8张。我的代码将对单元格范围进行相同的解析。

如何仍然使用我的代码来解析具有工作表范围(2,5)的工作簿?这就是我到目前为止所拥有的。

import glob
import openpyxl

path = 'C:/SomeFolder/*.xlsx'
files = glob.glob(path)
for file in files:
wb = openpyxl.load_workbook(file, data_only=True)
NameFile = file.rsplit('~', 2)[0]
sheet = wb.get_sheet_by_name('Title')
sheet2 = wb.get_sheet_by_name('TOTAL')
Week = sheet.cell(row=1, column=1).value
Date = sheet.cell(row=2, column=1).value
Name = sheet.cell(row=4, column=2).value
Title = sheet.cell(row=5, column=2).value
Site = sheet.cell(row=6, column=2).value
LocID = sheet.cell(row=7, column=2).value
Total = sheet2.cell(row=26, column=2).value
if wb.worksheets is range(2, 9):
    for n in range(2, 9):
        sheets = wb.worksheets[n]
        Days = wb.sheetnames[n]
        comment = sheets.cell(row=34, column=5).value
        for i in range(2, 57):
            From = sheets.cell(row=i, column=1).value
            To = sheets.cell(row=i, column=2).value
            Activity = sheets.cell(row=i, column=3).value
            TimeSheet = {'Sender': NameFile, 'Week': Week, 'Date': Date, 'Name': Name, 'Title': Title, 'Site': Site, 'LocID': LocID,
                        'Days': Days, 'From': From, 'To': To, 'Activity': Activity, 'Week Total': Total, 'Comments': comment}
else:
    for n in range(2, 5):
        for n in range(2, 9):
            sheets = wb.worksheets[n]
            Days = wb.sheetnames[n]
            comment = sheets.cell(row=34, column=5).value
            for i in range(2, 57):
                From = sheets.cell(row=i, column=1).value
                To = sheets.cell(row=i, column=2).value
                Activity = sheets.cell(row=i, column=3).value
                TimeSheet = {'Sender': NameFile, 'Week': Week, 'Date': Date, 'Name': Name, 'Title': Title,
                             'Site': Site, 'LocID': LocID,
                             'Days': Days, 'From': From, 'To': To, 'Activity': Activity, 'Week Total': Total,
                             'Comments': comment}
print(TimeSheet)

1 个答案:

答案 0 :(得分:0)

您实际上可以按如下方式遍历工作表:

for sheet in wb:
    if sheet.title=='Title':
        #Skip the title page with continue or do something to it here
        continue
    else:
        #for all pages other than the title page
        for i in range(2, 57):
             From = sheet.cell(i, column=1).value
             To= sheet.cell(i, column=2).value

请注意我是如何使用if语句跳过Title表格的。您可以通过这种方式跳过其他特定工作表。