Chào mọi người, hôm nay mình muốn chia sẻ một kinh nghiệm cá nhân khi làm việc với Excel, đặc biệt là khâu định dạng bảng dữ liệu. Như các bạn đã biết, việc định dạng thủ công cho các bảng dữ liệu lớn, lặp đi lặp lại có thể tốn rất nhiều thời gian và dễ gây sai sót. Gần đây, mình có bắt đầu tìm hiểu và áp dụng Python trong Excel để giải quyết vấn đề này và thấy hiệu quả rõ rệt.
Thay vì ngồi click chuột hàng giờ để tô màu, căn lề, kẻ viền, mình viết một đoạn script Python nhỏ để tự động hóa toàn bộ quá trình. Ví dụ, mình có thể quy định rõ:
- Tô màu xen kẽ các dòng để dễ nhìn.
- In đậm tiêu đề cột.
- Căn chỉnh văn bản trong các ô theo ý muốn (trái, phải, giữa).
- Tự động điều chỉnh độ rộng cột cho vừa với nội dung.
- Áp dụng định dạng số (ví dụ: thêm dấu phẩy hàng nghìn, định dạng tiền tệ).
Script của mình trông khá đơn giản, ví dụ như thế này:
import pandas as pd
df = pd.read_excel('du_lieu.xlsx')
# Giả sử có một hàm định dạng tùy chỉnh
def dinh_dang_bang(writer, sheet_name):
workbook = writer.book
worksheet = writer.sheets[sheet_name]
# Định dạng tiêu đề
header_format = workbook.add_format({'bold': True, 'align': 'center', 'valign': 'vcenter', 'bg_color': '#DDEBF7'})
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_format)
# Định dạng dòng xen kẽ (ví dụ đơn giản)
for row_num in range(1, len(df) + 1):
if row_num % 2 == 0:
row_format = workbook.add_format({'bg_color': '#F2F2F2'})
worksheet.set_row(row_num, None, row_format)
# Tự động điều chỉnh độ rộng cột
for col_num, value in enumerate(df.columns.values):
max_len = df[value].astype(str).str.len().max()
# Thêm một chút khoảng trống
adjusted_width = (max_len + 2)
worksheet.set_column(col_num, col_num, adjusted_width)
# Sử dụng ExcelWriter để áp dụng định dạng
with pd.ExcelWriter('du_lieu_da_dinh_dang.xlsx', engine='xlsxwriter') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
dinh_dang_bang(writer, 'Sheet1')
Tất nhiên, đoạn code trên chỉ là ví dụ minh họa cơ bản. Các bạn có thể tùy biến rất nhiều theo nhu cầu. Việc này giúp mình tiết kiệm cả ngày làm việc, đặc biệt khi phải xử lý nhiều file báo cáo tương tự nhau. Có ai đã áp dụng Python để định dạng Excel chưa, chia sẻ thêm kinh nghiệm nhé!