Chào các anh chị em trong diễn đàn,
Dạo này công việc của mình liên quan đến việc xử lý số liệu từ nhiều file Excel khác nhau, mà khổ nỗi là cấu trúc các file này lại không đồng nhất. Có file thì cột A là mã sản phẩm, có file thì lại là tên sản phẩm ở cột A. Việc gom thủ công vừa tốn thời gian, vừa dễ sai sót.
Mình đã thử tìm hiểu và áp dụng Python để tự động hóa việc này. Sau một thời gian mày mò, mình cũng gom được một script nhỏ để xử lý. Hôm nay mạo muội chia sẻ lên đây để anh em nào đang gặp tình huống tương tự có thể tham khảo, hoặc có cao kiến gì thì góp ý thêm cho mình hoàn thiện hơn.
Về cơ bản, ý tưởng là:
- Đọc danh sách các file Excel cần xử lý trong một thư mục.
- Với mỗi file, xác định các cột chứa thông tin cần thiết (ví dụ: mã sản phẩm, tên sản phẩm, số lượng) dựa trên tên cột hoặc vị trí tương đối.
- Trích xuất dữ liệu từ các cột đó.
- Gom tất cả dữ liệu vào một DataFrame duy nhất.
- Xuất ra một file Excel mới.
Thư viện mình hay dùng là pandas và openpyxl.
Ví dụ về cách đọc và gom dữ liệu cơ bản:
import pandas as pd
folder_path = 'duong_dan_toi_thu_muc_chua_file'
all_data = pd.DataFrame()
for filename in os.listdir(folder_path):
if filename.endswith('.xlsx'):
file_path = os.path.join(folder_path, filename)
df = pd.read_excel(file_path)
# Logic xử lý và chuẩn hóa cột ở đây
# Ví dụ: nếu cột 'MaSP' không có thì tạo mới...
all_data = pd.concat([all_data, df], ignore_index=True)
all_data.to_excel('ket_qua_gom_du_lieu.xlsx', index=False)
Phần khó nhất chính là làm sao để pandas nhận diện đúng các cột trong những file có cấu trúc khác nhau. Cái này tùy thuộc vào tình huống cụ thể mà có cách xử lý linh hoạt. Có thể dùng tên cột gần giống, hoặc dựa vào thứ tự cột nếu các file có quy tắc nhất định.
Có anh em nào đã từng xử lý vấn đề này với Python chưa? Chia sẻ kinh nghiệm hoặc các hàm hay ho mà mọi người hay dùng để chuẩn hóa dữ liệu từ nhiều nguồn khác nhau với.
Cảm ơn mọi người đã đọc bài!