Menu

Tự động hóa tạo báo cáo Excel định kỳ bằng Python và `openpyxl`

Đào Việt Khải 08/06/2026 15:19 203 lượt xem 2 trả lời

Chào các anh em trong diễn đàn,

Dạo này công việc của mình liên quan nhiều đến việc tạo báo cáo Excel hàng tuần, và mình nhận thấy việc làm thủ công tốn khá nhiều thời gian. Sau khi tìm hiểu, mình quyết định sử dụng Python để tự động hóa phần này, cụ thể là dùng thư viện openpyxl để thao tác với file Excel.

Mục tiêu của mình là tạo một script Python có thể tự động tạo ra một file báo cáo Excel mới dựa trên dữ liệu có sẵn (ví dụ: lấy từ một file CSV hoặc database). Script này sẽ thực hiện các công việc như:

  • Đọc dữ liệu nguồn.
  • Tổng hợp và tính toán các chỉ số cần thiết.
  • Tạo các sheet mới trong file Excel báo cáo.
  • Định dạng bảng, cell, thêm biểu đồ (nếu cần).
  • Lưu file báo cáo với tên có chứa ngày tháng để dễ quản lý.

Mình đã thử nghiệm và thành công với việc đọc dữ liệu từ file CSV và tạo một báo cáo đơn giản. Dưới đây là một đoạn code ví dụ minh họa cách tạo một sheet mới và ghi dữ liệu:

import openpyxl
from datetime import datetime

# Tạo workbook mới
workbook = openpyxl.Workbook()

# Chọn sheet active
sheet = workbook.active
sheet.title = "Bao Cao Tuan"

# Dữ liệu mẫu
data = [
    ["ID", "Ten San Pham", "So Luong", "Doanh Thu"],
    [1, "Ao Phong", 100, 5000000],
    [2, "Quan Jean", 50, 7500000],
    [3, "Mu Luoi Trai", 200, 2000000]
]

# Ghi dữ liệu vào sheet
for row_data in data:
    sheet.append(row_data)

# Định dạng header
for col_num in range(1, sheet.max_column + 1):
    cell = sheet.cell(row=1, column=col_num)
    cell.font = openpyxl.styles.Font(bold=True)

# Lấy ngày hiện tại để đặt tên file
current_date = datetime.now().strftime("%Y-%m-%d")
file_name = f"BaoCaoTuan_{current_date}.xlsx"

# Lưu file
try:
    workbook.save(file_name)
    print(f"Da luu bao cao thanh cong: {file_name}")
except Exception as e:
    print(f"Loi khi luu file: {e}")

Mình nghĩ cách này rất hữu ích cho các bạn thường xuyên phải làm báo cáo Excel. Các bạn có kinh nghiệm gì với openpyxl hoặc các thư viện Python khác để tương tác với Excel (như pandas) thì chia sẻ thêm nhé!

3

Hay quá bạn ơi! Mình cũng đang vật lộn với mấy cái báo cáo Excel định kỳ đây. Dùng openpyxl để tự động hóa là một ý tưởng tuyệt vời. Bạn có thể chia sẻ thêm về cách bạn lấy dữ liệu từ CSV hoặc database không? Mình đang phân vân giữa việc đọc trực tiếp hoặc dùng thư viện khác hỗ trợ thêm.

0

Đúng là làm báo cáo Excel thủ công mất nhiều thời gian thật bạn ạ! Mình cũng từng trải qua cảm giác đó. Việc dùng openpyxl để tự động hóa là một hướng đi rất hay.

Mình tò mò không biết bạn xử lý các trường hợp dữ liệu phức tạp hơn không, ví dụ như có nhiều sheet hoặc cần định dạng đặc biệt cho báo cáo cuối cùng? Nếu có, bạn có thể chia sẻ thêm về cách bạn cấu trúc script để quản lý các tác vụ đó không?

3

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

Đăng nhập Đăng ký