Menu

Tự động hóa tạo File Excel mới từ Template bằng Python

Giàng Thanh Tuyết 09/06/2026 07:32 480 lượt xem 3 trả lời

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

Dạo này mình thấy các bài viết về tự động hóa bằng Python trên diễn đàn mình rất hay, đặc biệt là các bài xử lý file Excel. Hôm nay, mình muốn chia sẻ một mẹo nhỏ mà mình hay dùng để tiết kiệm thời gian khi cần tạo ra nhiều file Excel mới dựa trên một file mẫu (template).

Ví dụ, công ty mình thường xuyên phải tạo các báo cáo tuần/tháng cho từng khách hàng khác nhau. Thay vì mở file template rồi copy-paste thông tin, mình viết một đoạn script Python nhỏ để tự động làm việc này. Script sẽ lấy thông tin tên khách hàng từ một file Excel khác, sau đó lần lượt tạo ra các file Excel mới dựa trên template đã có, đồng thời điền tên khách hàng vào một ô nhất định trong file mới.

Đây là đoạn code minh họa đơn giản:

import openpyxl
import os

# Đường dẫn đến file template và thư mục lưu file mới
template_path = 'template.xlsx'
output_dir = 'reports'

# Đảm bảo thư mục lưu file tồn tại
os.makedirs(output_dir, exist_ok=True)

# Tải template
template_wb = openpyxl.load_workbook(template_path)
template_sheet = template_wb.active

# Giả sử tên khách hàng nằm trong cột A của file 'customers.xlsx'
customers_wb = openpyxl.load_workbook('customers.xlsx')
customers_sheet = customers_wb.active

# Lặp qua từng tên khách hàng
for row in customers_sheet.iter_rows(min_row=2, values_only=True):
    customer_name = row[0] # Lấy tên khách hàng từ cột đầu tiên
    
    # Tạo tên file mới
    new_filename = f"BaoCao_{customer_name}.xlsx"
    new_filepath = os.path.join(output_dir, new_filename)
    
    # Ghi tên khách hàng vào ô B1 của template (ví dụ)
    template_sheet['B1'] = customer_name
    
    # Lưu file mới
    template_wb.save(new_filepath)
    print(f"Đã tạo file: {new_filepath}")

print("Hoàn thành!")

Lưu ý:

  • Bạn cần cài đặt thư viện openpyxl bằng lệnh: pip install openpyxl
  • Thay đổi template.xlsx, customers.xlsx và các ô/cột cho phù hợp với nhu cầu của bạn.
  • Script này chỉ là ví dụ cơ bản, bạn có thể mở rộng để điền nhiều dữ liệu khác vào template.

Hy vọng chia sẻ này hữu ích cho các bạn đang làm việc với Excel và muốn tự động hóa các tác vụ lặp đi lặp lại. Nếu có câu hỏi hoặc cách làm hay hơn, mọi người cùng thảo luận nhé!

5

Hay quá bạn ơi! Mình cũng đang "vật lộn" với việc tạo hàng loạt báo cáo tương tự. Bạn có thể chia sẻ cụ thể hơn về đoạn script Python đó không? Ví dụ như bạn dùng thư viện nào để đọc/ghi file Excel và cách bạn truyền dữ liệu từ template vào file mới như thế nào? Mình rất tò mò muốn học hỏi!

0

Đúng là một cách làm hay ho để tiết kiệm thời gian! Mình cũng từng gặp tình huống tương tự, phải tạo báo cáo cho nhiều chi nhánh. Bạn dùng thư viện Python nào cho việc này vậy? Mình đang phân vân giữa openpyxlpandas. Chia sẻ thêm kinh nghiệm để mọi người cùng học hỏi nhé!

0

Chào bạn,

Cảm ơn bạn đã chia sẻ mẹo hay này! Việc tự động hóa tạo file Excel mới từ template bằng Python thực sự rất hữu ích, đặc biệt với những ai phải làm báo cáo định kỳ cho nhiều đối tượng như bạn nói. Mình cũng đang tìm hiểu về cách này.

Bạn có thể chia sẻ thêm về cách bạn xử lý phần dữ liệu biến đổi (ví dụ: tên khách hàng, ngày tháng) từ template sang file mới không? Liệu có thể dùng cách nào để đọc dữ liệu từ một nguồn khác (như file CSV hoặc database) rồi điền vào template không nhỉ? Rất mong nhận được thêm chia sẻ từ bạn!

2

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

Đăng nhập Đăng ký