Chào các anh em, dạo này mình đang làm dự án tự động hóa một số tác vụ nhập liệu thủ công vào Excel. Công ty mình có nhiều form giấy cần nhập vào file Excel, mà làm thủ công thì tốn thời gian và dễ sai sót.
Mình đã thử dùng Python để đọc và ghi file Excel với các thư viện như openpyxl, pandas. Tuy nhiên, việc nhập liệu ban đầu vẫn phải qua giao diện dòng lệnh (command line) hoặc chỉnh sửa code Python, khá bất tiện cho các bạn ít rành về lập trình.
Sau một thời gian tìm tòi, mình phát hiện ra có thể kết hợp Python với Tkinter để tạo một giao diện nhập liệu đơn giản. Giao diện này giống như một form nhập liệu thông thường, người dùng chỉ cần điền thông tin vào các ô và bấm nút lưu là dữ liệu sẽ tự động được ghi vào file Excel.
Cách làm cơ bản:
- Sử dụng thư viện
tkinterđể xây dựng giao diện người dùng (GUI) với các widget như Label, Entry, Button. - Sử dụng thư viện
openpyxlđể thao tác với file Excel (tạo file mới, mở file, thêm dữ liệu vào ô, lưu file). - Viết các hàm Python để lấy dữ liệu từ các ô nhập liệu trên giao diện Tkinter và ghi vào hàng mới trong file Excel.
Ví dụ đơn giản về cách lấy dữ liệu từ ô nhập liệu (Entry) và ghi vào file Excel:
from tkinter import *
import openpyxl
# Tạo cửa sổ chính
window = Tk()
# Tạo các ô nhập liệu
label_name = Label(window, text='Tên:')
label_name.pack()
entry_name = Entry(window)
entry_name.pack()
label_age = Label(window, text='Tuổi:')
label_age.pack()
entry_age = Entry(window)
entry_age.pack()
# Hàm lưu dữ liệu
def save_data():
name = entry_name.get()
age = entry_age.get()
try:
workbook = openpyxl.load_workbook('data.xlsx')
except FileNotFoundError:
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append([name, age])
workbook.save('data.xlsx')
print('Dữ liệu đã được lưu!')
# Nút lưu
button_save = Button(window, text='Lưu', command=save_data)
button_save.pack()
window.mainloop()
Với cách này, chúng ta có thể tạo ra các form nhập liệu tùy chỉnh, phù hợp với nhiều loại dữ liệu khác nhau mà không cần người dùng phải biết code. Ai đã từng làm theo hướng này chưa, chia sẻ thêm kinh nghiệm hoặc các thư viện GUI khác cho Excel với Python nhé!