如何在 Tkinter 中的 Treeview 小部件中打开 Excel 电子表格?

tkinterpythongui-programming更新于 2025/7/18 16:44:17

Excel 电子表格包含一组以行和列形式存储的信息。我们可以使用 Treeview  小部件在 Tkinter 应用程序中显示和使用电子表格数据。Tkinter 中的 Treeview 小部件可帮助用户以表格形式添加和操作数据。但是,为了分析和操作大量数据,Python 提供了 Pandas  库,该库允许访问许多内置函数和方法来执行数据分析。

对于此示例,我们将按照以下步骤在 Tkinter 中显示 Excel 数据,

  • 导入所需的库,例如 Numpy、Pandas 和 filedialog。

  • 添加菜单栏以要求用户从资源管理器打开文件。

  • 添加命令并定义函数 open_file(),使其仅接受来自资源管理器的  .xlsx 文件。

  • 创建一个 Treeview  小部件。

  • 添加通过将列数据转换为列表,在 Treeview  小部件中查找列。

  • 遍历列以查找给定数据中的所有标题。

  • 可以通过将给定的数据框转换为 NumPy 对象来识别行。转换后,我们就可以使用列表方法将其转换为列表。

  • 遍历所有行并按顺序将行插入树中。

示例

# 导入所需库
from tkinter import *
from tkinter import ttk, filedialog
import numpy
import pandas as pd

# 创建 tkinter 框架实例
win = Tk()

# 设置 tkinter 窗口的大小
win.geometry("700x350")

# 创建 Style 小部件对象
style = ttk.Style()
style.theme_use('clam')

# 创建框架
frame = Frame(win)
frame.pack(pady=20)
# 定义打开文件的函数
def open_file():
   filename = filedialog.askopenfilename(title="打开文件", filetype=(("xlxs 文件", ".*xlsx"),
("所有文件", "*.")))

   if filename:
      try:
         filename = r"{}".format(filename)
         df = pd.read_excel(filename)
      except ValueError:
           label.config(text="无法打开文件")
      except FileNotFoundError:
         label.config(text="未找到文件")

   # 清除树中的所有先前数据
   clear_treeview()

   # 在 Treeview 小部件中添加新数据
   tree["column"] = list(df.columns)
   tree["show"] = "headings"

   # 对于标题,遍历列
   for col in tree["column"]:
      tree.heading(col, text=col)

   # 将数据放入行中
   df_rows = df.to_numpy().tolist()
      for row in df_rows:
         tree.insert("", "end", values=row)

   tree.pack()

# 清除 Treeview 小部件
def clear_treeview():
   tree.delete(*tree.get_children())

# 创建一个 Treeview 小部件
tree = ttk.Treeview(frame)

# 添加菜单
m = Menu(win)
win.config(menu=m)

# 添加菜单下拉菜单
file_menu = Menu(m, tearoff=False)
m.add_cascade(label="Menu", menu=file_menu)
file_menu.add_command(label="Open Spreadsheet", command=open_file)

# 添加标签小部件以显示文件内容
label = Label(win, text='')
label.pack(pady=20)

win.mainloop()

输出

如果我们运行上述代码,它将显示一个窗口,该窗口顶部包含一个菜单,用于打开 Excel 文件。

当我们打开文件时,它会在窗口中显示电子表格数据。


相关文章


有用资源