Menu

Tự động hóa tạo báo cáo Excel từ dữ liệu SQL Server bằng Python

Mâu Bảo Hiếu 13/03/2026 20:41 157 lượt xem 3 trả lời

Chào mọi người,

Dạo gần đây mình có dự án cần lấy dữ liệu từ SQL Server rồi xử lý và tạo báo cáo Excel tự động. Mình muốn chia sẻ lại cách mình đã làm bằng Python để mọi người tham khảo, hy vọng hữu ích cho ai đang cần làm việc tương tự.

Mục tiêu: Lấy dữ liệu từ một bảng trong SQL Server, lọc và tổng hợp theo yêu cầu, sau đó xuất ra file Excel có định dạng đẹp.

Công cụ sử dụng:

  • Python 3.x
  • Thư viện pyodbc (hoặc pymssql) để kết nối SQL Server
  • Thư viện pandas để xử lý dữ liệu
  • Thư viện openpyxl (hoặc xlsxwriter) để ghi file Excel

Các bước chính:

  1. Kết nối SQL Server: Sử dụng pyodbc để thiết lập kết nối tới database của bạn. Cần có thông tin server, database, username, password.
  2. Truy vấn dữ liệu: Viết câu lệnh SQL để lấy dữ liệu cần thiết.
  3. Xử lý với Pandas: Đọc dữ liệu vào DataFrame của pandas. Thực hiện các thao tác lọc, sắp xếp, nhóm, tính toán theo yêu cầu báo cáo.
  4. Ghi ra Excel: Sử dụng pandas.DataFrame.to_excel() để lưu DataFrame thành file Excel. Có thể tùy chỉnh tên sheet, có ghi index hay không.
  5. Định dạng Excel (nâng cao): Nếu muốn báo cáo đẹp hơn, có thể dùng openpyxl hoặc xlsxwriter để thêm màu sắc, định dạng font, kẻ bảng, tạo biểu đồ...

Ví dụ đoạn code đơn giản để đọc dữ liệu:

import pyodbc
import pandas as pd

conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};' # Hoặc driver khác phù hợp
    'SERVER=your_server_name;'
    'DATABASE=your_database_name;'
    'UID=your_username;' 
    'PWD=your_password'
)

query = "SELECT * FROM YourTable WHERE SomeCondition = 'Value'"
df = pd.read_sql(query, conn)

conn.close()

# Tiếp tục xử lý với df bằng pandas...
df.to_excel('report.xlsx', index=False)

Cách này giúp mình tiết kiệm rất nhiều thời gian so với việc copy-paste thủ công. Mọi người có cách nào hay hơn hoặc gặp khó khăn ở bước nào thì cùng thảo luận nhé!

1

Hay quá bạn ơi! Mình cũng đang đau đầu với việc này. Cho mình hỏi thêm một chút, bạn dùng thư viện nào để định dạng file Excel cho đẹp vậy? Mình thử với openpyxl mà thấy hơi lằng nhằng.

4

Cảm ơn bạn đã chia sẻ nhé! Cách bạn dùng Python để tự động hóa tạo báo cáo Excel từ SQL Server thực sự rất hay. Mình cũng đang tìm hiểu về việc này.

Về phần định dạng file Excel, bạn có thể chia sẻ thêm kinh nghiệm dùng openpyxl để làm cho báo cáo trông chuyên nghiệp hơn không? Mình cũng đang gặp chút khó khăn với việc này.

1
Tuyệt vời! Mình cũng đang tìm hiểu về tự động hóa quy trình này. Mình có một thắc mắc nhỏ, khi bạn lấy dữ liệu từ SQL Server, bạn có xử lý trường hợp dữ liệu bị thiếu (null) trước khi đưa vào pandas không? Hay pandas tự xử lý phần này rồi?
4

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

Đăng nhập Đăng ký