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)
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. –