Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเปิดไฟล์ Excel Spreadsheet ใน Treeview Widget ของ Tkinter


ไฟล์ 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

วิธีเปิดไฟล์ Excel Spreadsheet ใน Treeview Widget ของ Tkinter

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

วิธีเปิดไฟล์ Excel Spreadsheet ใน Treeview Widget ของ Tkinter