如何在Tkinter的Treeview小部件中打开Excel电子表格?
Excel电子表格包含一组以行和列形式存储的信息。我们可以使用**Treeview**小部件在Tkinter应用程序中显示和使用电子表格数据。Tkinter中的Treeview小部件帮助用户以表格形式添加和操作数据。但是,为了分析和操作大量数据,Python提供了**Pandas**库,该库提供了许多内置函数和方法来执行数据分析。
在本例中,我们将按照以下步骤在Tkinter中显示Excel数据:
导入所需的库,例如**Numpy、Pandas**和**filedialog**。
添加菜单栏,以提示用户从资源管理器中打开文件。
添加命令并定义函数**open_file()**,使其只接受资源管理器中的**.xlsx**文件。
创建一个**Treeview**小部件。
通过将列数据转换为列表,在**Treeview**小部件中添加列。
迭代列以查找给定数据中的所有标题。
可以通过将给定数据帧转换为NumPy对象来识别行。转换后,我们可以使用列表方法将其转换为列表。
迭代所有行,并将行按顺序插入树中。
示例
# Import the required libraries from tkinter import * from tkinter import ttk, filedialog import numpy import pandas as pd # Create an instance of tkinter frame win = Tk() # Set the size of the tkinter window win.geometry("700x350") # Create an object of Style widget style = ttk.Style() style.theme_use('clam') # Create a Frame frame = Frame(win) frame.pack(pady=20) # Define a function for opening the file def open_file(): filename = filedialog.askopenfilename(title="Open a File", filetype=(("xlxs files", ".*xlsx"), ("All Files", "*."))) if filename: try: filename = r"{}".format(filename) df = pd.read_excel(filename) except ValueError: label.config(text="File could not be opened") except FileNotFoundError: label.config(text="File Not Found") # Clear all the previous data in tree clear_treeview() # Add new data in Treeview widget tree["column"] = list(df.columns) tree["show"] = "headings" # For Headings iterate over the columns for col in tree["column"]: tree.heading(col, text=col) # Put Data in Rows df_rows = df.to_numpy().tolist() for row in df_rows: tree.insert("", "end", values=row) tree.pack() # Clear the Treeview Widget def clear_treeview(): tree.delete(*tree.get_children()) # Create a Treeview widget tree = ttk.Treeview(frame) # Add a Menu m = Menu(win) win.config(menu=m) # Add Menu Dropdown file_menu = Menu(m, tearoff=False) m.add_cascade(label="Menu", menu=file_menu) file_menu.add_command(label="Open Spreadsheet", command=open_file) # Add a Label widget to display the file content label = Label(win, text='') label.pack(pady=20) win.mainloop()
输出
如果运行上述代码,它将显示一个窗口,该窗口顶部包含一个菜单,用于打开Excel文件。
打开文件后,它将显示窗口中的电子表格数据。
广告