2016-07-02 8 views
0

Ich habe ein Programm, das Daten aus mehreren Arbeitsmappen mit mehreren Arbeitsblättern analysiert.Arbeitsblatt für Bedingungsprüfung python

Blätter 2 bis 9 sind Wochentage (So-Sa). Einige Blätter haben jedoch einen anderen Blattbereich.

Einige Blätter haben 2 bis 5 (Mo-Fr). Alles andere ist gleich, nur einige Arbeitsmappen haben insgesamt 10 Blätter, während andere 8 Blätter haben. Mein Code wird das gleiche Parsing des Zellbereichs durchführen.

Wie kann ich meinen Code immer noch verwenden, um die Arbeitsmappen zu analysieren, die einen Blattbereich (2, 5) haben? Das habe ich bisher.

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) 
+0

Es wird dringend empfohlen, diesen Code in funktionale Einheiten zu zerlegen. Im Moment ist es fast unmöglich zu verstehen, was Sie zu tun versuchen. –

Antwort

0

Sie können tatsächlich durch die Arbeitsblätter durchlaufen wie folgt:

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 

Hinweis, wie ich das Titelblatt mit einer if-Anweisung übersprungen. Sie können andere spezifische Blätter auf diese Weise überspringen.