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ặcpymssql) để kết nối SQL Server - Thư viện
pandasđể xử lý dữ liệu - Thư viện
openpyxl(hoặcxlsxwriter) để ghi file Excel
Các bước chính:
- 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. - Truy vấn dữ liệu: Viết câu lệnh SQL để lấy dữ liệu cần thiết.
- 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.
- 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. - Định dạng Excel (nâng cao): Nếu muốn báo cáo đẹp hơn, có thể dùng
openpyxlhoặcxlsxwriterđể 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é!