Test_book.xlsx ist eine vorhandene Excel-Datei, die Angestelltennamen, Stunden, Rate und Gesamtbezahlung anzeigen soll. Ich kam zu einem Teil, auf dem auf dem zweiten Blatt die Namen und Stunden der Angestellten in einem Blatt, die Namen der Angestellten und die Auszahlungsrate angezeigt wurden, und zuletzt die Namen der Mitarbeiter und die Gesamtbezahlung auf dem letzten Blatt; Ich kann jedoch nicht herausfinden, wie man Spaltennamen auf jedem Blatt anlegt (Angestelltennamen, Stunden, Stundensätze, Gesamtbezahlung). Hier ist der Code, den ich habe auf gearbeitet:Wie setzen Sie Spaltennamen in vorhandene Excel-Tabelle durch Python?
import openpyxl
from itertools import chain
from collections import defaultdict
wb = openpyxl.load_workbook("Test_book.xlsx")
sheet=wb.get_sheet_by_name('Hours')
employee_names=[]
employee_hours=[]
for row in sheet['A']:
employee_names.append(row.value)
for row in sheet['B']:
employee_hours.append(row.value)
print(employee_names)
print(employee_hours)
my_dict=dict(zip(employee_names,employee_hours))
print(my_dict)
sheet2=wb.get_sheet_by_name('Rate')
employee_names2=[]
employee_Rate=[]
for row in sheet2['A']:
employee_names2.append(row.value)
for row in sheet2['B']:
employee_Rate.append(row.value)
print(employee_names2)
print(employee_Rate)
my_dict2=dict(zip(employee_names2,employee_Rate))
print(my_dict2)
sheet3=wb.get_sheet_by_name('payable')
sheet3rows=[]
#pulls key from dictionary, multiples it by other number
for row in sheet['A']:
if row.value in my_dict:
gross=(float(my_dict[row.value]*float(my_dict2[row.value])))
#creates list
sheet3rows.append(gross)
print(format(gross,'.2f'))
print(sheet3rows)
my_dict3=dict(zip(employee_names2,sheet3rows))
print(my_dict3)
#Print gross to payable sheet
r=1
for x in sheet3rows:
sheet3.cell(row=r,column=2).value=x
r+=1
#wb.save("Test_book.xlsx")
my_dict4 = defaultdict(list)
for k, v in chain(my_dict.items(), my_dict2.items(), my_dict3.items()):
my_dict4[k].append(v)
for k, v in my_dict4.items():
print(k, v)
Wie Sie durch dieses angehängte Bild sehen können, gibt es keine Spalten:
Haben Sie Pandas mit in Betracht gezogen? Ich denke, dass das meiste, wenn nicht alles, in weniger als fünf Zeilen erledigt werden kann (z. B. read_excel, merge, ExcelWriter usw.). – DrTRD
Ich kann im Moment keinen Panda benutzen. Gibt es eine Möglichkeit, dies zu tun, indem ich zusätzlich zu dem, was ich derzeit habe, noch weitere Kodierungen habe? Vielen Dank. –