如何将我的所有 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
我正在尝试将我的树视图数据保存在不同的 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