Chào các bác, dạo này em đang loay hoay với việc gom dữ liệu từ nhiều file Excel báo cáo hàng tuần của các phòng ban khác nhau. Mỗi file có cấu trúc hơi khác một chút, lại còn phải lọc ra những thông tin cần thiết rồi tổng hợp lại. Làm thủ công tốn quá nhiều thời gian mà dễ sai sót.
Em có tìm hiểu và thử dùng Python để tự động hóa việc này. Thấy khá hiệu quả nên muốn chia sẻ lại cho anh em nào đang gặp tình huống tương tự.
Ý tưởng chính là dùng thư viện pandas để đọc các file Excel, sau đó xử lý, lọc và ghép chúng lại thành một file báo cáo tổng duy nhất.
Các bước cơ bản em làm như sau:
- Sử dụng
globđể lấy danh sách tất cả các file Excel trong một thư mục. - Dùng
pandas.read_excel()để đọc từng file. - Với mỗi DataFrame đọc được, tiến hành làm sạch và lọc dữ liệu theo yêu cầu (ví dụ: chỉ lấy dữ liệu của tuần hiện tại, bỏ các cột không cần thiết).
- Ghép các DataFrame đã xử lý lại với nhau bằng
pandas.concat(). - Cuối cùng, xuất kết quả ra một file Excel mới bằng
pandas.to_excel().
Code mẫu cho việc đọc và ghép file:
import pandas as pd
import glob
folder_path = 'duong/dan/toi/thu/muc/excel'
output_file = 'bao_cao_tong_hop.xlsx'
all_files = glob.glob(f'{folder_path}/*.xlsx')
df_list = []
for filename in all_files:
try:
df = pd.read_excel(filename)
# --- Thêm các bước xử lý, lọc dữ liệu tại đây ---
# Ví dụ: df = df[df['Trạng thái'] == 'Hoàn thành']
df_list.append(df)
except Exception as e:
print(f'Lỗi khi đọc file {filename}: {e}')
if df_list:
big_df = pd.concat(df_list, ignore_index=True)
big_df.to_excel(output_file, index=False)
print('Đã tạo báo cáo tổng hợp thành công!')
else:
print('Không tìm thấy file nào để xử lý.')
Em thấy cách này giúp tiết kiệm rất nhiều thời gian so với làm thủ công. Anh em nào có kinh nghiệm hoặc có cách nào hay hơn thì chia sẻ thêm nhé!