如何在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文件。

打开文件后,它将显示窗口中的电子表格数据。

更新于:2021年6月18日

7K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告