簡體   English   中英

如何將一個Treeview的數據保存為Tkinter中的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數據為 output,但實際上我想要的是將我的Treeview的數據作為 excel 文件保存在我的計算機中。 謝謝

這對於pandas非常簡單,您所要做的就是創建一個編寫器並使用它將 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到 function:

pip install openpyxl

所以你的 function 會是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM