如何使用tkinter来提示用户将DataFrame保存到Excel文件中?

我是Python新手,一般编程。 我试图build立一个我写的代码从Excel导入数据,进行一些分析,然后从DataFrame导出新的数据到另一个Excel文件的GUI。 我以前使用过这个代码,但现在我需要一个提示,询问用户他们想要保存文件的位置:

writer = pd.ExcelWriter("Results.xlsx", engine="xlsxwriter") data.to_excel(writer, index=False, sheet_name="Results") worksheet = writer.sheets["Results"] writer.save() 

不幸的是,当我使用asksaveasfilename时,我无法保存新的Excel文件。 以下是我一直用来testing文件保存的方法:

 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() 

我感谢任何帮助。 谢谢!

编辑:我得到它的工作

  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 

不应该有mode选项。 这就够了:

savefile = asksaveasfilename(filetypes=(("Excel files", "*.xlsx"), ("All files", "*.*") ))