Ich habe hier etwas Code in Python, die eine .xlsx-Datei mit openpyxl erstellt.Python Ändern Sie Daten der bestehenden .xlsx Datei
Wenn ich jedoch versuchte, die Datei zu ändern, werden die neuen Daten in der Datei registriert, aber vorherige Daten sind verschwunden. Ich habe gehört, drecopy oder (.copy.copy) zu verwenden, um die Daten der Datei zu kopieren, aber wie kann ich die kopierten Daten plus meine aktuellen Änderungen in die .xlsx-Datei einfügen?
(* einige Code fehlen hier, wie es ein Programm mit GUI ist, ist der Code juz viel zu lange)
##############creating######################
try:
wb_ID = load_workbook('list.xlsx')
ws_ID = wb_ID.active
pass
except EnvironmentError as e: # OSError or IOError... As FileNotFoundError only exist in Python 3.x version
print(os.strerror(e.errno)) #use operating system error to define FileNotFoundErrorError
from openpyxl import Workbook #import Workbook function to create new xlsx (excel) file
wb_ID = Workbook()
ws_ID = wb_ID.active
ws_ID['A1'] = "IC"
ws_ID.merge_cells('B1:E1')
ws_ID['B1'] = "Name"
ws_ID.merge_cells('F1:K1')
ws_ID['L1'] = "Email"
ws_ID['M1'] = "Height"
ws_ID['N1'] = "Gender"
ws_ID['K1'] = "Bloodtype"
ws_ID.merge_cells('O1:Q1')
ws_ID['O1'] = "Default Consultation Day"
ws_ID.merge_cells('R1:T1')
ws_ID['R1'] = "Latest Appoinment"
wb_ID.save("list.xlsx")
pass
############editing#########################
wb = load_workbook(filename='list.xlsx')
ws = wb.active
last_row = 1
while True:
last_row += 1
cellchecker =ws['A'+str(last_row)].value #get the value of the cell
print(cellchecker)
print last_row
if cellchecker is None: #check if cell is empty-->then this row number is the new row
wb.save('list.xlsx')
break
else:
continue
print(str(last_row)) #convert to string var before passing the var for worksheet function
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A'+str(last_row)] = (str(entry_IC.get().strip(' ')))
ws.merge_cells('B'+str(last_row)+':E'+str(last_row))
ws['B'+str(last_row)] = (str(entry_Name.get()))
ws.merge_cells('F'+str(last_row)+':K'+str(last_row))
ws['F'+str(last_row)] = (str(entry_email.get().strip(' ')))
ws['L'+str(last_row)] = (str(entry_Height.get().strip(' ')))
ws['M'+str(last_row)] = gender_selected
ws['N'+str(last_row)] = bloodtype_selected
ws.merge_cells('O'+str(last_row)+':Q'+str(last_row))
ws['O'+str(last_row)] = str(default_selected_day)
ws.merge_cells('R'+str(last_row)+':T'+str(last_row))
today = datetime.date.today() #as u might wonder why i redeclare this var since it already exist, but this is local var for this function only
ws['T'+str(last_row)] = (str(today))
wb.save('list.xlsx')
bemerkt, dass die Bearbeitung Teil der vorhandenen Daten überschrieben werden, wie in openpyxl Dokumentation gewarnt. Ich konnte wirklich keine Möglichkeit finden, bestehende .xlsx-Dateien zu ändern. Bitte hilf mir, ich stecke hier fest.
Ich verstehe nicht, was das Problem ist: openpyxl können Sie vorhandene Dateien bearbeiten und dies beinhaltet das Überschreiben von Daten. Außerdem ist der Code unnötig ausführlich. –
über Code führen zum Verlust von Originaldaten in der Datei, während neue Daten darin gespeichert werden @CharlieClark –
Welche Daten verloren wo? Sie ersetzen absichtlich die Datei "list.xlsx" durch eine komplett neue Arbeitsmappe. –