ไฟล์ Excel Spreadsheet มีข้อมูลเก็บในรูปแบบแถวและคอลัมน์ เราสามารถแสดงและใช้ข้อมูล spreadsheet ในแอปพลิเคชัน Tkinter ด้วย Widget Treeview Treeview widget ใน Tkinter ช่วยให้ผู้ใช้เพิ่มและจัดการข้อมูลในรูปแบบตาราง อย่างไรก็ตาม เพื่อวิเคราะห์และจัดการข้อมูลขนาดใหญ่ Python มีไลบรารี Pandas ให้ฟังก์ชันและเมธอดในตัวมากมาย
สำหรับตัวอย่างนี้ จะทำตามขั้นตอนเพื่อแสดงข้อมูล Excel ใน Tkinter:
- นำเข้าไลบรารีที่จำเป็น เช่น Numpy, Pandas, และ filedialog
- เพิ่ม Menu Bar ขอให้ผู้ใช้เปิดไฟล์จาก Explorer
- เพิ่ม Command และกำหนดฟังก์ชัน open_file() ที่รับเฉพาะไฟล์ .xlsx
- สร้าง Widget Treeview
- เพิ่มคอลัมน์ใน Treeview โดยแปลงข้อมูลคอลัมน์เป็นลิสต์
- วนลูปคอลัมน์หา Heading ทั้งหมดในข้อมูล
- แถวระบุได้โดยแปลง DataFrame เป็นอ็อบเจกต์ NumPy แล้วแปลงเป็นลิสต์
- วนลูปทุกแถวและแทรกลงใน tree ตามลำดับ
ตัวอย่าง
# 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

เมื่อเปิดไฟล์ จะแสดงข้อมูล spreadsheet ในหน้าต่าง
