Excel 스프레드시트는 행(row)과 열(column) 형태로 저장된 정보의 집합입니다. Tkinter 애플리케이션에서는 Treeview 위젯을 사용하면 이러한 스프레드시트 데이터를 화면에 표시하고 활용할 수 있습니다. Treeview 위젯은 사용자가 표(table) 형태로 데이터를 추가하고 조작할 수 있도록 도와줍니다.
다만 대량의 데이터를 분석하고 가공해야 할 때는 Python의 Pandas 라이브러리가 유용합니다. Pandas는 데이터 분석에 필요한 다양한 내장 함수와 메서드를 제공하기 때문입니다.
구현 단계
이번 예제에서는 다음 순서대로 Excel 데이터를 Tkinter 창에 표시해 보겠습니다.
- Numpy, Pandas, filedialog 등 필요한 라이브러리를 임포트합니다.
- 사용자가 파일 탐색기에서 파일을 선택할 수 있도록 메뉴 바(Menu Bar)를 추가합니다.
- open_file() 함수를 정의하여 탐색기에서 .xlsx 파일만 열 수 있도록 설정합니다.
- Treeview 위젯을 생성합니다.
- 열 데이터를 리스트로 변환한 뒤 Treeview 위젯에 컬럼을 추가합니다.
- 컬럼을 반복(iterate)하며 데이터의 모든 헤더(Heading)를 찾아 설정합니다.
- 데이터프레임을 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 = Frame(win)
frame.pack(pady=20)
# 파일을 여는 함수 정의
def open_file():
filename = filedialog.askopenfilename(title="Open a File", filetype=(("xlsx 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_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 = Label(win, text='')
label.pack(pady=20)
win.mainloop()실행 결과
위 코드를 실행하면 상단에 메뉴가 있는 창이 나타나고, 이 메뉴를 통해 Excel 파일을 열 수 있습니다.

파일을 열면 스프레드시트의 데이터가 창 안에 표 형태로 출력됩니다.
