Chào các anh em, dạo này mình làm báo cáo có nhiều file Excel nhỏ lẻ, mỗi file chứa dữ liệu của một chi nhánh. Việc tổng hợp thủ công rất mất thời gian và dễ sai sót. Mình tìm tòi và phát hiện ra một cách dùng Python để tự động hóa việc này, muốn chia sẻ lại cho mọi người tham khảo.
Ý tưởng là mình sẽ viết một script Python để duyệt qua tất cả các file Excel trong một thư mục, sau đó đọc dữ liệu từ mỗi file và ghi vào một sheet mới trong một file Excel tổng hợp duy nhất.
Các bước thực hiện khá đơn giản, chủ yếu sử dụng thư viện pandas và os:
- Sử dụng
os.listdir()để lấy danh sách tất cả các file trong thư mục chỉ định. - Lọc ra các file có đuôi
.xlsxhoặc.xls. - Dùng
pd.read_excel()để đọc dữ liệu từ từng file. - Tạo một
pd.ExcelWriterđể ghi dữ liệu vào file tổng hợp. - Với mỗi file đọc được, ghi dữ liệu vào một sheet mới trong file tổng hợp, tên sheet có thể là tên file gốc để dễ phân biệt.
Ví dụ đoạn code cơ bản:
import pandas as pd
import os
folder_path = 'duong_dan_den_thu_muc_excel'
output_file = 'tong_hop_du_lieu.xlsx'
excel_files = [f for f in os.listdir(folder_path) if f.endswith(('.xlsx', '.xls'))]
with pd.ExcelWriter(output_file) as writer:
for file in excel_files:
file_path = os.path.join(folder_path, file)
try:
df = pd.read_excel(file_path)
# Lấy tên file không có đuôi để làm tên sheet
sheet_name = os.path.splitext(file)[0]
df.to_excel(writer, sheet_name=sheet_name, index=False)
print(f"Đã xử lý file: {file}")
except Exception as e:
print(f"Lỗi khi xử lý file {file}: {e}")
print(f"Hoàn thành tổng hợp dữ liệu vào file: {output_file}")
Cách này giúp mình tiết kiệm rất nhiều thời gian, đặc biệt khi số lượng file cần xử lý lên đến hàng chục, thậm chí hàng trăm. Hy vọng chia sẻ này hữu ích cho các bạn đang gặp tình huống tương tự.