Haben Sie jemals das Datum in verschiedenen EXCEL an derselben Stelle aktualisiert? Das Problem, das ich dieses Mal lösen möchte, ist: Ich möchte dasselbe Blatt, denselben Ort und dieselben Daten in verschiedenen EXCELs eingeben.
window 10 python 3.7.2 Excel (Erweiterung xlsx) * Da die verwendete Bibliothek openpyxl nur xlsx unterstützen möchte siehe / Vergleich von Bibliotheken, die Excel-Dateien mit Python verarbeiten
Ich möchte das Datum in Zelle A1 von EXCEL mit einem anderen Namen einfügen.
Dateneingabebildschirm Geben Sie die Daten, die Sie eingeben möchten, den Blattnamen und den Zellenstandort auf dem mit Python TK erstellten Bildschirm ein.
Geben Sie die Daten ein und drücken Sie die Execute-Taste, um die Daten in jedes EXCEL zu schreiben. [Punkt] Schließen Sie beim Ausführen unbedingt das Excel, das Sie aktualisieren möchten, und führen Sie es aus. Andernfalls können Sie das geöffnete Excel nicht bearbeiten, und es tritt ein Fehler auf.
# -*- coding: utf-8 -*-
"""
Geben Sie mehrere Blätter gleichzeitig ein
"""
import glob
from openpyxl import load_workbook
import tkinter as tk
import tkinter.messagebox as tkm
def batExcel(term, sheet, cell):
#Geben Sie das Master-Blatt an, das ausgefüllt werden soll
Sheet = sheet
#Wählen Sie mehrere Dateien aus
files = glob.glob('*.xlsx')
successFile = []
failFile = []
#Durchlaufen Sie alle Dateien
for file in files:
wb = load_workbook(file)
#Lesen Sie alle Blätter
sheetnames = (wb.sheetnames)
#Stellen Sie fest, ob eine Master-Sheet-Tabelle vorhanden ist
if Sheet in sheetnames:
#Blatt auswählen
ws = wb[Sheet]
#Zelle auswählen
ws[cell] = term
wb.save(file)
wb.close()
successFile.append(file)
else:
failFile.append(file)
#Gibt den EXCEL-Namen der erfolgreichen oder nicht erfolgreichen Eingabe zurück
return successFile,failFile
#Was passiert, wenn Sie auf Bodan klicken?
#Drei Argumente, Text->Daten, die Sie eingeben möchten, Master->Blatt, das Sie eingeben möchten, Zelle->Zelle, die Sie eingeben möchten
def button_click(text, master, cell):
#Löschen Sie die Originaldaten in der Liste jedes Mal, wenn Sie die Taste drücken
ListBox1.delete(1, tk.END)
ListBox2.delete(1, tk.END)
files = batExcel(text, master, cell)
for i in range(len(files[0])):
ListBox1.insert(tk.END, files[0][i])
for j in files[1]:
ListBox2.insert(tk.END, j)
#GUI-Bildschirm erstellen
root = tk.Tk()
#Titel einstellen
root.title("Abrechnungszeitraum")
#Bildschirmgröße einstellen
root.geometry('400x500')
#Legen Sie die Bezeichnung für den Abrechnungszeitraum fest
Static1 = tk.Label(text='Bitte geben Sie den Abrechnungszeitraum im Format JJJJMM ein')
Static1.pack()
#Eingabefeld für Abrechnungszeitraum festlegen
Entry1_term = tk.Entry()
Entry1_term.pack()
#Hauptblattetikett festlegen
Static2 = tk.Label(text='Bitte geben Sie den Masternamen ein, der aktualisiert werden soll')
Static2.pack()
#Stellen Sie das Eingabefeld für das Masterblatt ein
Entry2_sheet = tk.Entry()
Entry2_sheet.pack()
#Legen Sie die Zellenposition auf dem Masterblatt fest
Static3 = tk.Label(text='Bitte geben Sie den zu aktualisierenden Zellenstandort ein')
Static3.pack()
#Legen Sie das Eingabefeld für die Zellenposition auf dem Masterblatt fest
Entry3_cell = tk.Entry()
Entry3_cell.pack()
#Richten Sie eine Run-Taste ein
Button = tk.Button(text='Schaltfläche "Ausführen"', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
Button.pack()
#Installationserfolgslistenfeld installiert
ListBox1 = tk.Listbox(width=50, height=10)
ListBox1.insert(tk.END,'Erfolgreiche Verlängerung des Abrechnungszeitraums EXCEL:')
ListBox1.pack()
#Installationsfehler-Listenfeld installiert
ListBox2 = tk.Listbox(width=50, height=10)
ListBox2.insert(tk.END,'Fehler beim Aktualisieren des Abrechnungszeitraums EXCEL, da das Master Sheet nicht vorhanden ist:')
ListBox2.pack()
#Reagiert auf aktive GUI-Bildschirme wie Mount-Klicks, Schließen des Bildschirms usw.
root.mainloop()
Lassen Sie uns einen tkinter-Dateneingabebildschirm erstellen siehe / Kopieren und Einfügen! Tkinter
import tkinter as tk
import tkinter.messagebox as tkm
#GUI-Bildschirm erstellen
root = tk.Tk()
#Titel einstellen
root.title("Abrechnungszeitraum")
#Bildschirmgröße einstellen
root.geometry('400x500')
#Legen Sie die Bezeichnung für den Abrechnungszeitraum fest
Static1 = tk.Label(text='Bitte geben Sie den Abrechnungszeitraum im Format JJJJMM ein')
Static1.pack()
#Eingabefeld für Abrechnungszeitraum festlegen
Entry1_term = tk.Entry()
Entry1_term.pack()
#Hauptblattetikett festlegen
Static2 = tk.Label(text='Bitte geben Sie den Masternamen ein, der aktualisiert werden soll')
Static2.pack()
#Stellen Sie das Eingabefeld für das Masterblatt ein
Entry2_sheet = tk.Entry()
Entry2_sheet.pack()
#Legen Sie die Zellenposition auf dem Masterblatt fest
Static3 = tk.Label(text='Bitte geben Sie den zu aktualisierenden Zellenstandort ein')
Static3.pack()
#Legen Sie das Eingabefeld für die Zellenposition auf dem Masterblatt fest
Entry3_cell = tk.Entry()
Entry3_cell.pack()
#Richten Sie eine Run-Taste ein
Button = tk.Button(text='Schaltfläche "Ausführen"', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
Button.pack()
#Installationserfolgslistenfeld installiert
ListBox1 = tk.Listbox(width=50, height=10)
ListBox1.insert(tk.END,'Erfolgreiche Verlängerung des Abrechnungszeitraums EXCEL:')
ListBox1.pack()
#Installationsfehler-Listenfeld installiert
ListBox2 = tk.Listbox(width=50, height=10)
ListBox2.insert(tk.END,'Fehler beim Aktualisieren des Abrechnungszeitraums EXCEL, da das Master Sheet nicht vorhanden ist:')
ListBox2.pack()
#Reagiert auf aktive GUI-Bildschirme wie Mount-Klicks, Schließen des Bildschirms usw.
root.mainloop()
Stellen Sie den Fall ein, in dem der Bildschirm abgeschlossen und die Schaltfläche Ausführen gebunden ist
Button = tk.Button(text='Schaltfläche "Ausführen"', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
#Der folgende Code hat den gleichen Effekt
Button = tk.Button(text='Schaltfläche "Ausführen"', command= button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
[point] Das Argument sollte jedoch Entry1_term.get () sein. Sobald es in einer Variablen gespeichert und erneut als Argument verwendet wurde, kann der Wert nicht gut übergeben werden (wahrscheinlich, weil es sich um ein Bereichsproblem handelt, bin ich damit nicht vertraut, es tut mir leid ...). Ich erhalte eine Fehlermeldung im folgenden Code
#Eingabefeld einstellen
Entry1 = tk.Entry()
#Holen Sie sich die eingegebenen Daten
Entry1_value = Entry1.get()
#Richten Sie eine Run-Taste ein
Button = tk.Button(text='Schaltfläche "Ausführen"', command=lambda: button_click(Entry1_value)) #error
Wenn Sie auf eine Schaltfläche klicken, werden in vielen Excel gleichzeitig bestimmte Daten in ein bestimmtes Blatt eingegeben und ein case_click-Fall definiert.
#Was passiert, wenn Sie auf Bodan klicken?
#Drei Argumente, Text->Daten, die Sie eingeben möchten, Master->Blatt, das Sie eingeben möchten, Zelle->Zelle, die Sie eingeben möchten
def button_click(text, master, cell):
#Löschen Sie die Originaldaten in der Liste jedes Mal, wenn Sie die Taste drücken
ListBox1.delete(1, tk.END)
ListBox2.delete(1, tk.END)
files = batExcel(text, master, cell)
for i in range(len(files[0])):
ListBox1.insert(tk.END, files[0][i])
for j in files[1]:
ListBox2.insert(tk.END, j)
Die [point] -Funktion muss definiert werden, bevor sie verwendet werden kann, dh die button_click-Funktion lautet Button = tk.Button (text = 'execute button', command = button_click (Entry1_term.get (), Entry2_sheet.get () ), Entry3_cell.get ()))
Schreiben Sie oben
Definieren Sie eine Funktion zum gleichzeitigen Eingeben bestimmter Daten in ein bestimmtes Blatt in einer großen Anzahl von Excel Der Fluss ist wie folgt.
import glob
from openpyxl import load_workbook
def batExcel(term, sheet, cell):
#Geben Sie das Master-Blatt an, das ausgefüllt werden soll
Sheet = sheet
#Wählen Sie mehrere Dateien aus
files = glob.glob('*.xlsx')
successFile = []
failFile = []
#Durchlaufen Sie alle Dateien
for file in files:
wb = load_workbook(file)
#Lesen Sie alle Blätter
sheetnames = (wb.sheetnames)
#Stellen Sie fest, ob eine Master-Sheet-Tabelle vorhanden ist
if Sheet in sheetnames:
#Blatt auswählen
ws = wb[Sheet]
#Zelle auswählen
ws[cell] = term
wb.save(file)
wb.close()
successFile.append(file)
else:
failFile.append(file)
#Gibt den EXCEL-Namen der erfolgreichen oder nicht erfolgreichen Eingabe zurück
return successFile,failFile
Recommended Posts