Menu

Tự động hóa tạo báo cáo hàng tuần từ nhiều file Excel bằng Python

Thân Long Uyển 11/03/2026 14:39 506 lượt xem 3 trả lời

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é!

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc gom báo cáo hàng tuần đây, mỗi lần làm xong là muốn "rụng rời tay chân".

Bạn có thể chia sẻ kỹ hơn về cách bạn xử lý các cấu trúc file hơi khác nhau đó không? Dùng pandas có phần nào xử lý được vấn đề này một cách linh hoạt không bạn nhỉ?

Cảm ơn bạn đã chia sẻ nhé!

4

Hay quá bạn ơi! Mình cũng đang đau đầu với việc gom báo cáo hàng tuần đây, mỗi lần làm xong là muốn "rụng rời tay chân".

Bạn có thể chia sẻ kỹ hơn về cách bạn xử lý các cấu trúc file hơi khác nhau đó không? Dùng pandas có phần nào xử lý được vấn đề này một cách linh hoạt không bạn nhỉ?

Cảm ơn bạn đã chia sẻ nhé!

0

Đúng là cái vụ gom báo cáo này ám ảnh thật! Mình cũng từng trải qua cảm giác đó.

Về việc cấu trúc file hơi khác nhau, ban đầu mình cũng loay hoay. Nhưng với pandas, bạn có thể xác định các cột cần thiết dựa trên tên cột (nếu có sự nhất quán) hoặc vị trí cột. Nếu tên cột khác nhau thì có thể mapping lại trước khi merge. Hoặc nếu cấu trúc khác biệt quá lớn thì có thể viết thêm các hàm xử lý riêng cho từng loại file trước khi gom chung. Bạn có thể cho biết mức độ khác biệt về cấu trúc file mà bạn đang gặp phải không? Để mọi người cùng thảo luận thêm.

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký