Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不同的excel文件中保存所有我的Treeview数据和特定数据?_Python_Python 3.x_Excel_Tkinter_Treeview - Fatal编程技术网

Python 如何在不同的excel文件中保存所有我的Treeview数据和特定数据?

Python 如何在不同的excel文件中保存所有我的Treeview数据和特定数据?,python,python-3.x,excel,tkinter,treeview,Python,Python 3.x,Excel,Tkinter,Treeview,我试图将我的treeview数据保存在不同的excel文件中,事实上,每次我想要保存数据时,我的代码都会更新同一excel文件中的数据,所以我想要的是保存在不同的文件中。我的意思是,当我按下“保存”按钮时,它会显示“我想在我的计算机中保存它的位置”以及“给该文件取什么名称”,然后只显示一条消息“保存成功”或只是“您没有选择任何要保存的数据”。这是我将数据保存在同一文件中的代码: def save(): cols = ['ID CARD','NAME','SURNAME', 'DATE']

我试图将我的treeview数据保存在不同的excel文件中,事实上,每次我想要保存数据时,我的代码都会更新同一excel文件中的数据,所以我想要的是保存在不同的文件中。我的意思是,当我按下“保存”按钮时,它会显示“我想在我的计算机中保存它的位置”以及“给该文件取什么名称”,然后只显示一条消息“保存成功”或只是“您没有选择任何要保存的数据”。这是我将数据保存在同一文件中的代码:

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:

然后将excel_名称替换为:

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

虽然我不确定每次用户关闭时excel\u name是否为或“/”,但请使用printexcel\u name并关闭该框,然后使用打印出来的内容创建if


关于使用tkinter的filedialog的更多信息:

似乎需要循环查找要创建的文件数。这里有很多关于vba循环和循环的问答,所以请使用该结构编辑代码。请只问一个问题,无论是创建多个EXCEL还是修复treeview搜索。@SolarMike谢谢,我会搜索更多。@CoolCloud我编辑了buddy。谢谢,伙计,我也得到了一个与你类似的代码,我只是不知道如何将它放在我的函数中,而且我遇到了错误,现在我更好地理解了解决方案。非常感谢。
from tkinter import filedialog, messagebox
excel_name = filedialog.asksaveasfilename(title='Save location',defaultextension=[('Excel','*.xlsx')],filetypes=[('Excel','*.xlsx')]) 
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