Avez-vous déjà mis à jour la date au même endroit dans divers EXCEL? Le problème que je veux résoudre cette fois est: Je veux saisir la même feuille, le même emplacement et les mêmes données dans divers EXCEL.
window 10 python 3.7.2 Excel (extension xlsx) * Puisque la bibliothèque openpyxl utilisée veut uniquement prendre en charge xlsx voir / comparaison des bibliothèques qui gèrent les fichiers Excel avec Python
Je veux mettre la date dans la cellule A1 de EXCEL avec un nom différent.
Écran de saisie des données Entrez les données que vous souhaitez saisir, le nom de la feuille et l'emplacement de la cellule sur l'écran créé avec python TK.
Entrez les données et appuyez sur le bouton Exécuter pour écrire les données dans chaque EXCEL. [point] Lors de l'exécution, assurez-vous de fermer l'Excel que vous souhaitez mettre à jour et de l'exécuter, sinon vous ne pourrez pas modifier dans l'Excel ouvert et une erreur se produira.
# -*- coding: utf-8 -*-
"""
Saisissez plusieurs feuilles en même temps
"""
import glob
from openpyxl import load_workbook
import tkinter as tk
import tkinter.messagebox as tkm
def batExcel(term, sheet, cell):
#Spécifiez la feuille principale à remplir
Sheet = sheet
#Sélectionnez plusieurs fichiers
files = glob.glob('*.xlsx')
successFile = []
failFile = []
#Parcourez tous les fichiers
for file in files:
wb = load_workbook(file)
#Lire toutes les fiches
sheetnames = (wb.sheetnames)
#Déterminer si une table de feuille principale existe
if Sheet in sheetnames:
#Sélectionnez la feuille
ws = wb[Sheet]
#Sélectionnez la cellule
ws[cell] = term
wb.save(file)
wb.close()
successFile.append(file)
else:
failFile.append(file)
#Renvoie le nom EXCEL de la saisie réussie ou non
return successFile,failFile
#Que se passe-t-il lorsque vous cliquez sur Bodan
#Trois arguments, texte->Données que vous souhaitez saisir, maître->Feuille que vous souhaitez saisir, cellule->Cellule que vous souhaitez saisir
def button_click(text, master, cell):
#Effacez les données d'origine de la liste chaque fois que vous appuyez sur le bouton
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)
#Créer un écran GUI
root = tk.Tk()
#Définir le titre
root.title("Période comptable")
#Définir la taille de l'écran
root.geometry('400x500')
#Définir le libellé de la période comptable
Static1 = tk.Label(text='Veuillez saisir la période comptable au format AAAAMM')
Static1.pack()
#Définir le champ de saisie de la période comptable
Entry1_term = tk.Entry()
Entry1_term.pack()
#Définir l'étiquette de la feuille principale
Static2 = tk.Label(text='Veuillez saisir le nom du maître à mettre à jour')
Static2.pack()
#Définir le champ de saisie de la feuille principale
Entry2_sheet = tk.Entry()
Entry2_sheet.pack()
#Définir l'étiquette d'emplacement de cellule sur la feuille principale
Static3 = tk.Label(text='Veuillez saisir l'emplacement de la cellule à mettre à jour')
Static3.pack()
#Définir le champ de saisie de l'emplacement de la cellule sur la feuille principale
Entry3_cell = tk.Entry()
Entry3_cell.pack()
#Configurer un bouton d'exécution
Button = tk.Button(text='Bouton Exécuter', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
Button.pack()
#Zone de liste de réussite de l'installation installée
ListBox1 = tk.Listbox(width=50, height=10)
ListBox1.insert(tk.END,'Renouvellement réussi de la période comptable EXCEL:')
ListBox1.pack()
#Zone de liste des échecs d'installation installée
ListBox2 = tk.Listbox(width=50, height=10)
ListBox2.insert(tk.END,'Échec de la mise à jour de la période comptable EXCEL car la feuille principale n'existe pas:')
ListBox2.pack()
#Réagit aux écrans de l'interface graphique active, tels que les clics de montage, la fermeture de l'écran, etc.
root.mainloop()
Créons un écran de saisie de données tkinter voir / copier et coller! Tkinter
import tkinter as tk
import tkinter.messagebox as tkm
#Créer un écran GUI
root = tk.Tk()
#Définir le titre
root.title("Période comptable")
#Définir la taille de l'écran
root.geometry('400x500')
#Définir le libellé de la période comptable
Static1 = tk.Label(text='Veuillez saisir la période comptable au format AAAAMM')
Static1.pack()
#Définir le champ de saisie de la période comptable
Entry1_term = tk.Entry()
Entry1_term.pack()
#Définir l'étiquette de la feuille principale
Static2 = tk.Label(text='Veuillez saisir le nom du maître à mettre à jour')
Static2.pack()
#Définir le champ de saisie de la feuille principale
Entry2_sheet = tk.Entry()
Entry2_sheet.pack()
#Définir l'étiquette d'emplacement de cellule sur la feuille principale
Static3 = tk.Label(text='Veuillez saisir l'emplacement de la cellule à mettre à jour')
Static3.pack()
#Définir le champ de saisie de l'emplacement de la cellule sur la feuille principale
Entry3_cell = tk.Entry()
Entry3_cell.pack()
#Configurer un bouton d'exécution
Button = tk.Button(text='Bouton Exécuter', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
Button.pack()
#Zone de liste de réussite de l'installation installée
ListBox1 = tk.Listbox(width=50, height=10)
ListBox1.insert(tk.END,'Renouvellement réussi de la période comptable EXCEL:')
ListBox1.pack()
#Zone de liste des échecs d'installation installée
ListBox2 = tk.Listbox(width=50, height=10)
ListBox2.insert(tk.END,'Échec de la mise à jour de la période comptable EXCEL car la feuille principale n'existe pas:')
ListBox2.pack()
#Réagit aux écrans de l'interface graphique active, tels que les clics de montage, la fermeture de l'écran, etc.
root.mainloop()
Définissez le cas où l'écran est terminé et le bouton d'exécution est lié
Button = tk.Button(text='Bouton Exécuter', command=lambda: button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
#Le code ci-dessous a le même effet
Button = tk.Button(text='Bouton Exécuter', command= button_click(Entry1_term.get(), Entry2_sheet.get(), Entry3_cell.get()))
[point] Cependant, l'argument doit être Entry1_term.get (), une fois enregistré dans une variable et utilisé à nouveau comme argument, la valeur ne peut pas être bien passée (probablement parce que c'est un problème de portée, je ne suis pas familier avec elle, donc je suis désolé ...) , J'obtiens une erreur dans le code ci-dessous
#Définir le champ de saisie
Entry1 = tk.Entry()
#Récupérez les données saisies
Entry1_value = Entry1.get()
#Configurer un bouton d'exécution
Button = tk.Button(text='Bouton Exécuter', command=lambda: button_click(Entry1_value)) #error
Lorsqu'un bouton est cliqué, des données spécifiques sont entrées dans une feuille spécifique en même temps dans de nombreux Excel, et un cas button_click est défini.
#Que se passe-t-il lorsque vous cliquez sur Bodan
#Trois arguments, texte->Données que vous souhaitez saisir, maître->Feuille que vous souhaitez saisir, cellule->Cellule que vous souhaitez saisir
def button_click(text, master, cell):
#Effacez les données d'origine de la liste chaque fois que vous appuyez sur le bouton
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)
La fonction [point] doit être définie avant de pouvoir être utilisée, c'est-à-dire que la fonction button_click est Button = tk.Button (text = 'execute button', command = button_click (Entry1_term.get (), Entry2_sheet.get () ), Entry3_cell.get ()))
Écrivez ci-dessus
Définir une fonction pour saisir simultanément des données spécifiques dans une feuille spécifique dans un grand nombre d'Excel Le flux est le suivant. -Pour écrire dans tous les fichiers, lisez l'ordre de tous les fichiers → feuille → cellule, et obtenez d'abord [Feuille] [A1] de tous les fichiers.
import glob
from openpyxl import load_workbook
def batExcel(term, sheet, cell):
#Spécifiez la feuille principale à remplir
Sheet = sheet
#Sélectionnez plusieurs fichiers
files = glob.glob('*.xlsx')
successFile = []
failFile = []
#Parcourez tous les fichiers
for file in files:
wb = load_workbook(file)
#Lire toutes les fiches
sheetnames = (wb.sheetnames)
#Déterminer si une table de feuille principale existe
if Sheet in sheetnames:
#Sélectionnez la feuille
ws = wb[Sheet]
#Sélectionnez la cellule
ws[cell] = term
wb.save(file)
wb.close()
successFile.append(file)
else:
failFile.append(file)
#Renvoie le nom EXCEL de la saisie réussie ou non
return successFile,failFile
Recommended Posts