Menu

Tự động hóa gửi báo cáo Excel qua Email hàng ngày bằng Python

Lê Hiển Trầm 14/06/2026 02:46 455 lượt xem 3 trả lời

Chào các bạn, dạo này mình thấy các bài chia sẻ về tự động hóa bằng Python trên diễn đàn rất hay, đặc biệt là các bài liên quan đến Excel. Mình cũng đang áp dụng Python để tự động hóa một số tác vụ và hôm nay muốn chia sẻ với mọi người một kịch bản nhỏ nhưng khá hữu ích: tự động gửi báo cáo Excel qua email hàng ngày.

Công việc của mình có một báo cáo cần gửi cho sếp mỗi sáng. Thay vì phải mở file, lưu lại rồi gửi thủ công, mình đã viết một đoạn script Python để làm hết việc này.

Ý tưởng chính:

  • Tạo hoặc cập nhật file báo cáo Excel (có thể dùng thư viện pandas hoặc openpyxl).
  • Lưu file báo cáo.
  • Sử dụng thư viện smtplibemail để soạn và gửi email.
  • Thiết lập lịch chạy tự động bằng Task Scheduler (Windows) hoặc cron job (Linux/macOS).

Code minh họa (sử dụng thư viện pandassmtplib):

import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# --- Phần 1: Tạo hoặc cập nhật file Excel ---
# Giả sử bạn có dữ liệu dạng dictionary
data = {'Column1': [1, 2, 3], 'Column2': ['A', 'B', 'C']}
df = pd.DataFrame(data)
file_name = 'bao_cao_hang_ngay.xlsx'
df.to_excel(file_name, index=False)

# --- Phần 2: Gửi email ---
email_sender = 'your_email@gmail.com'
email_password = 'your_app_password'
email_receiver = 'recipient_email@example.com'

subject = 'Báo cáo hàng ngày'
body = 'File báo cáo đính kèm.'

msg = MIMEMultipart()
msg['From'] = email_sender
msg['To'] = email_receiver
msg['Subject'] = subject

msg.attach(MIMEText(body, 'plain'))

# Đính kèm file
with open(file_name, 'rb') as attachment:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header(
        'Content-Disposition',
        f'attachment; filename= {file_name}',
    )
    msg.attach(part)

# Kết nối tới server Gmail và gửi email
try:
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(email_sender, email_password)
    text = msg.as_string()
    server.sendmail(email_sender, email_receiver, text)
    server.quit()
    print('Email sent successfully!')
except Exception as e:
    print(f'Error sending email: {e}')

Lưu ý:

  • Bạn cần thay thế 'your_email@gmail.com', 'your_app_password' (lấy mật khẩu ứng dụng từ cài đặt bảo mật tài khoản Google của bạn), và 'recipient_email@example.com' bằng thông tin thực tế.
  • Thư viện pandas cần được cài đặt: pip install pandas openpyxl

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

4

Hay quá bạn ơi! Mình cũng đang tìm hiểu về tự động hóa với Python cho Excel. Bạn có thể chia sẻ cụ thể hơn về cách bạn đọc dữ liệu từ file Excel và đính kèm nó vào email không? Mình đang hơi lấn cấn phần này.

3

Kịch bản này đúng là "cứu cánh" cho những ai làm báo cáo hàng ngày thật! Mình cũng từng mất kha khá thời gian cho việc này.

Phần bạn hỏi về đọc dữ liệu Excel và đính kèm email, mình nghĩ bạn có thể dùng thư viện pandas để đọc file Excel một cách dễ dàng, sau đó dùng smtplibemail để soạn và gửi email. Nếu bạn cần ví dụ cụ thể hơn về đoạn code đọc file và đính kèm, cứ nói nhé!

0

Hay quá bạn ơi! Mình cũng đang tìm hiểu về tự động hóa với Python cho Excel. Bạn có thể chia sẻ cụ thể hơn về cách bạn đọc dữ liệu từ file Excel và đính kèm nó vào email không? Mình đang hơi lấn cấn phần này.

4

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

Đăng nhập Đăng ký