如何在 Tkinter 中将 Treeview 数据保存为 excel 文件?
How to save a Treeview data as excel file in Tkinter?
我的 Treeview
表单中有一些数据绑定到我的 SQLite 数据库,我想知道是否有办法将我的 Treeview
的数据保存为 excel我电脑里的文件。
mytree = ttk.Treeview(frame_busqueda, height=19, column=('column1', 'column2', 'column3', 'column4', 'column5', 'column6'), show='headings', style="Custom.Treeview")
mytree.pack()
style = ttk.Style()
style.configure("Custom.Treeview.Heading",
foreground="green", relief="flat", font='arial 10 bold')
style.map("Custom.Treeview.Heading", relief=[('active', 'groove'), ('pressed', 'sunken')])
mytree.heading("#1", text="ID CARD")
mytree.column("#1", minwidth=0, width=103, stretch=NO)
mytree.heading("#2", text="NAME")
mytree.column("#2", minwidth=0, width=200, stretch=NO)
mytree.heading("#3", text="SURNAME")
def savetreeview():
with open("new.csv", "w", newline='') as myfile:
csvwriter = csv.writer(myfile, delimiter=',')
for row_id in mytree.get_children():
row = mytree.item(row_id)['values']
csvwriter.writerow(row)
print(row)
我试图使用 csv 来尝试获取行,它显示我所有的 Treeview
数据作为输出,但实际上我想要的是保存我的 Treeview
数据作为我电脑中的 excel 文件。谢谢
这对于 pandas
来说非常简单,您所要做的就是创建一个 writer 并使用它将 csv 写入 excel,例如:
import pandas as pd
writer = pd.ExcelWriter('nameofexcelfiletocreate.xlsx') # Creates this excel file
df = pd.read_csv('new.csv') # Reads the csv and makes a dataframe
df.to_excel(writer,'sheet1') # Writes the dataframe to excel file
writer.save() # Saves the file
这将创建一个新的 excel 文件,并将您的 csv 转换为 excel。请注意,您必须安装 openpyxl
才能运行:
pip install openpyxl
所以你的函数应该是这样的:
def call():
cols = ['ID CARD','NAME','SURNAME'] # Your column headings here
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()
def saveExcel():
workbook = load_workbook(filename='problem record.xlsx')
sheet=workbook['Sheet1']
sheet.delete_rows(idx=2, amount=15)
for row_id in treeview.get_children():
row = treeview.item(row_id)['values']
sheet.append(row)
workbook.save(filename='problem record.xlsx')
我的 Treeview
表单中有一些数据绑定到我的 SQLite 数据库,我想知道是否有办法将我的 Treeview
的数据保存为 excel我电脑里的文件。
mytree = ttk.Treeview(frame_busqueda, height=19, column=('column1', 'column2', 'column3', 'column4', 'column5', 'column6'), show='headings', style="Custom.Treeview")
mytree.pack()
style = ttk.Style()
style.configure("Custom.Treeview.Heading",
foreground="green", relief="flat", font='arial 10 bold')
style.map("Custom.Treeview.Heading", relief=[('active', 'groove'), ('pressed', 'sunken')])
mytree.heading("#1", text="ID CARD")
mytree.column("#1", minwidth=0, width=103, stretch=NO)
mytree.heading("#2", text="NAME")
mytree.column("#2", minwidth=0, width=200, stretch=NO)
mytree.heading("#3", text="SURNAME")
def savetreeview():
with open("new.csv", "w", newline='') as myfile:
csvwriter = csv.writer(myfile, delimiter=',')
for row_id in mytree.get_children():
row = mytree.item(row_id)['values']
csvwriter.writerow(row)
print(row)
我试图使用 csv 来尝试获取行,它显示我所有的 Treeview
数据作为输出,但实际上我想要的是保存我的 Treeview
数据作为我电脑中的 excel 文件。谢谢
这对于 pandas
来说非常简单,您所要做的就是创建一个 writer 并使用它将 csv 写入 excel,例如:
import pandas as pd
writer = pd.ExcelWriter('nameofexcelfiletocreate.xlsx') # Creates this excel file
df = pd.read_csv('new.csv') # Reads the csv and makes a dataframe
df.to_excel(writer,'sheet1') # Writes the dataframe to excel file
writer.save() # Saves the file
这将创建一个新的 excel 文件,并将您的 csv 转换为 excel。请注意,您必须安装 openpyxl
才能运行:
pip install openpyxl
所以你的函数应该是这样的:
def call():
cols = ['ID CARD','NAME','SURNAME'] # Your column headings here
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()
def saveExcel():
workbook = load_workbook(filename='problem record.xlsx')
sheet=workbook['Sheet1']
sheet.delete_rows(idx=2, amount=15)
for row_id in treeview.get_children():
row = treeview.item(row_id)['values']
sheet.append(row)
workbook.save(filename='problem record.xlsx')