如何在Tkinter的树形窗口小部件中打开Excel电子表格?

如何在Tkinter的树形窗口小部件中打开Excel电子表格?

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

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

  • 导入所需的库,例如 NumpyPandasfiledialog
  • 添加菜单栏以请求用户从文件资源管理器中打开文件。
  • 添加命令并定义一个函数 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="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="文件无法打开")
        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=file_menu)
file_menu.add_command(label="打开电子表格", command=open_file)

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

win.mainloop()
Python

输出

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

如何在Tkinter的树形窗口小部件中打开Excel电子表格?

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

如何在Tkinter的树形窗口小部件中打开Excel电子表格?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册