python - tutorial - ¿Cómo puedo usar tkinter para solicitar a los usuarios que guarden un DataFrame en un archivo de Excel?
toplevel tkinter (1)
No debería haber mode
opción de mode
. Esto es suficiente:
savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"), ("All files", "*.*") ))
Soy nuevo en Python y la programación en general. Estoy intentando construir una GUI para un código que escribí que importa datos de Excel, realiza algunos análisis y luego exporta los datos nuevos del DataFrame a otro archivo de Excel. Utilicé este código anteriormente, pero ahora necesito un aviso que le pregunte al usuario dónde quiere guardar el archivo:
writer = pd.ExcelWriter("Results.xlsx", engine="xlsxwriter")
data.to_excel(writer, index=False, sheet_name="Results")
worksheet = writer.sheets["Results"]
writer.save()
Lamentablemente, no puedo guardar el nuevo archivo de Excel cuando uso asksaveasfilename. Esto es lo que he estado usando para probar el guardado de archivos:
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import asksaveasfilename
from tkinter.messagebox import showerror
import pandas as pd
class Analysis:
def __init__(self, master):
self.master = master
master.title("Test")
self.message = "Select an Excel file to import."
self.label_text = StringVar()
self.label_text.set(self.message)
self.label = Label(master, textvariable=self.label_text)
self.button = Button(master, text="Browse", command=self.load_file)
self.label.grid(row=0, column=0, columnspan=2, sticky=W)
self.button.grid(row=1, column=0, sticky=W)
def load_file(self):
file = askopenfilename(filetypes=(("Excel files", "*.xlsx"),
("All files", "*.*") ))
if file:
try:
data = pd.read_excel(file,sheetname="Sheet1")
#this doesn''t save anything
savefile = asksaveasfilename(mode="w",filetypes=(("Excel files", "*.xlsx"),
("All files", "*.*") ))
#used this code before
writer = pd.ExcelWriter("Results.xlsx", engine="xlsxwriter")
data.to_excel(writer, index=False, sheet_name="Results")
worksheet = writer.sheets["Results"]
writer.save()
self.message = "Complete"
self.label_text.set(self.message)
except:
self.message = "Error"
self.label_text.set(self.message)
showerror("Open Source File", "Failed to import file/n''%s''" % file)
return
root=Tk()
my_gui = Analysis(root)
root.mainloop()
Agradezco cualquier ayuda. ¡Gracias!
Editar: lo tengo para trabajar
def load_file(self):
file = askopenfilename(filetypes=(("Excel files", "*.xlsx"),
("All files", "*.*") ))
if file:
try:
savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"),
("All files", "*.*") ))
data = pd.read_excel(file,sheetname="Sheet1")
data.to_excel(savefile + ".xlsx", index=False, sheet_name="Results")
self.message = "Complete"
self.label_text.set(self.message)
except:
self.message = "Error. Please try again."
self.label_text.set(self.message)
showerror("Open Source File", "Failed to import file/n''%s''" % file)
return