Menu

Tự động hóa tạo file Excel mới từ nhiều file CSV bằng Python

Thạch Độ Huy 14/06/2026 16:49 611 lượt xem 3 trả lời

Chào các bạn trong diễn đàn,

Mình thường xuyên phải làm việc với các file CSV nhỏ lẻ và cần tổng hợp chúng lại thành một file Excel duy nhất để tiện theo dõi và phân tích. Trước đây, mình thường copy-paste thủ công hoặc dùng các hàm trong Excel, nhưng với số lượng file lớn thì rất mất thời gian và dễ sai sót.

Gần đây, mình có tìm hiểu và áp dụng Python để tự động hóa việc này, và thấy hiệu quả rõ rệt. Mình muốn chia sẻ lại cách làm đơn giản này với mọi người, hy vọng sẽ giúp ích cho các bạn nào đang gặp tình huống tương tự.

Cách làm

Mình sử dụng thư viện pandas để đọc các file CSV và openpyxl (hoặc xlsxwriter) để ghi ra file Excel.

  1. Chuẩn bị: Đảm bảo bạn đã cài đặt Python và các thư viện cần thiết. Nếu chưa, bạn có thể cài bằng pip: pip install pandas openpyxl
  2. Viết code Python:
import pandas as pd
import glob
import os

# Thư mục chứa các file CSV
csv_folder = 'duong/dan/toi/thu/muc/csv'
# Tên file Excel đầu ra
output_excel_file = 'tong_hop_du_lieu.xlsx'

# Tìm tất cả các file CSV trong thư mục
all_files = glob.glob(os.path.join(csv_folder, "*.csv"))

# Đọc từng file CSV và ghép chúng lại
list_of_dfs = []
for f in all_files:
    df = pd.read_csv(f)
    list_of_dfs.append(df)

# Tạo một DataFrame tổng hợp
combined_df = pd.concat(list_of_dfs, ignore_index=True)

# Ghi DataFrame tổng hợp ra file Excel
combined_df.to_excel(output_excel_file, index=False)

print(f"Đã tổng hợp {len(all_files)} file CSV vào {output_excel_file}")

Giải thích code

  • glob.glob: Giúp tìm kiếm tất cả các file có đuôi .csv trong thư mục chỉ định.
  • pd.read_csv: Đọc nội dung của từng file CSV vào một DataFrame của pandas.
  • pd.concat: Ghép các DataFrame lại với nhau. ignore_index=True để tạo lại chỉ số mới cho DataFrame kết quả.
  • combined_df.to_excel: Xuất DataFrame tổng hợp ra file Excel. index=False để không ghi chỉ số của DataFrame ra file Excel.

Cách này giúp mình tiết kiệm rất nhiều thời gian, đặc biệt khi có hàng chục, thậm chí hàng trăm file CSV cần xử lý. Các bạn có thể tùy chỉnh thêm code để xử lý các trường hợp phức tạp hơn như định dạng ngày tháng, tên cột khác nhau giữa các file, v.v.

Hy vọng chia sẻ này hữu ích cho mọi người!

2

Hay quá bạn ơi! Mình cũng đang đau đầu với vụ tổng hợp file CSV đây. Python đúng là cứu cánh cho những tác vụ lặp đi lặp lại. Bạn có thể chia sẻ thêm về thư viện Python bạn dùng để đọc CSV và ghi ra file Excel không? Mình tò mò không biết có cách nào để xử lý luôn cả định dạng (format) của các cột khi ghi ra Excel không nhỉ?

3

Hay quá bạn ơi! Mình cũng đang đau đầu với vụ tổng hợp file CSV đây. Python đúng là cứu cánh cho những tác vụ lặp đi lặp lại.

Bạn có thể chia sẻ thêm về thư viện Python bạn dùng để đọc CSV và ghi ra file Excel không? Mình tò mò không biết có cách nào để xử lý luôn cả định dạng (format) của các cột khi ghi ra Excel không nhỉ?

1

Chào bạn,

Mình cũng hay gặp tình huống tương tự như bạn vậy đó, việc tổng hợp file CSV thủ công đúng là tốn thời gian và dễ phát sinh lỗi. Rất hay là bạn đã nghĩ đến việc dùng Python để giải quyết vấn đề này.

Mình thấy nhiều anh em trong diễn đàn hay dùng thư viện pandas cho mấy vụ đọc CSV và ghi ra Excel lắm. pandas rất mạnh mẽ, vừa đọc file nhanh, vừa xử lý dữ liệu dễ dàng, lại còn hỗ trợ xuất ra file Excel với nhiều định dạng khác nhau nữa.

Không biết bạn đang dùng thư viện nào cho dự án của mình vậy? Chia sẻ thêm để mọi người cùng học hỏi nhé!

5

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

Đăng nhập Đăng ký