如何将我的所有 Treeview 数据以及特定数据保存在不同的 Excel 文件中?

How to save all my Treeview's data and also specific data in different Excel files?

我正在尝试将我的树视图数据保存在不同的 Excel 文件中,实际上我的代码正在工作 每次我想保存它时都在同一个 Excel 文件中更新我的数据,所以怎么办我想要的是保存在不同的文件中。我的意思是,当我按下保存按钮时,它会显示 'where I want to save it in my computer' 和 'what name to give that file',然后只显示一条消息 'saved successfully' 或只是“您没有 select 任何要保存的数据”。这是我的代码,它将数据保存在同一个文件中:

def save():
    cols = ['ID CARD','NAME','SURNAME', 'DATE']
    path = 'read.csv'
    excel_name = 'newfile.xlsx'
    lst = []
    with open(path, "w", newline='') as myfile:
        csvwriter = csv.writer(myfile, delimiter=',')
        for row_id in mytree.get_children():
            row = mytree.item(row_id,'values')
            lst.append(row)
        lst = list(map(list,lst))
        lst.insert(0,cols)
        for row in lst:
            csvwriter.writerow(row)

    writer = pd.ExcelWriter(excel_name)
    df = pd.read_csv(path)
    df.to_excel(writer,'sheetname')
    writer.save() 

这样做并不难,你必须使用 tkinter 中的 filedialog:

from tkinter import filedialog, messagebox

然后将 excel_name 替换为:

excel_name = filedialog.asksaveasfilename(title='Save location',defaultextension=[('Excel','*.xlsx')],filetypes=[('Excel','*.xlsx')]) 

这应该会弹出一个文件对话框,询问您保存文件的位置,然后逻辑将文件保存在返回的位置。您可以使用 messagebox 使它变得更好,例如:

excel_name = filedialog.asksaveasfilename(title='Save location',defaultextension=[('Excel','*.xlsx')],filetypes=[('Excel','*.xlsx')]) 

if not excel_name or excel_name == '/': # If the user closes the dialog without choosing location
    messagebox.showerror('Error','Choose a location to save')
    return # Stop the function 

虽然我不确定每次用户关闭时 excel_name'' 还是 '/',请使用 print(excel_name) 并关闭框,然后使 if 与打印出来的任何内容。

更多关于使用 tkinter 的文件对话框:Tkinter Dialogs — Python 3.9.2 documentation