Chào mọi người,
Dạo gần đây mình có tìm hiểu về cách tự động hóa việc tạo báo cáo Excel bằng Python, và muốn chia sẻ lại với anh em trong diễn đàn, đặc biệt là những ai đang làm việc với dữ liệu lớn và cần biểu diễn nó dưới dạng biểu đồ trực quan.
Trong các bài viết trước, mình thấy có nhiều hướng dẫn về việc đọc/ghi dữ liệu Excel bằng Python, nhưng việc tạo biểu đồ trực tiếp từ Python để nhúng vào file Excel thì chưa có nhiều.
Hôm nay, mình muốn giới thiệu cách kết hợp thư viện Pandas để xử lý dữ liệu và Matplotlib để tạo biểu đồ, sau đó lưu biểu đồ này thành file ảnh và chèn vào file Excel báo cáo.
Các bước cơ bản:
- Sử dụng Pandas để đọc dữ liệu từ nguồn (có thể là file Excel khác, CSV, database...).
- Xử lý, tổng hợp dữ liệu theo yêu cầu của báo cáo.
- Sử dụng Matplotlib để vẽ các loại biểu đồ (cột, đường, tròn...) từ dữ liệu đã xử lý.
- Lưu biểu đồ dưới dạng file ảnh (ví dụ: .png).
- Sử dụng thư viện
openpyxlhoặcxlsxwriterđể mở file Excel báo cáo và chèn ảnh biểu đồ vào vị trí mong muốn.
Ví dụ đơn giản về cách tạo biểu đồ cột:
import pandas as pd
import matplotlib.pyplot as plt
# Dữ liệu mẫu
data = {'Tháng': ['1', '2', '3', '4'], 'Doanh thu': [100, 120, 150, 130]}
df = pd.DataFrame(data)
# Vẽ biểu đồ cột
plt.figure(figsize=(8, 6))
plt.bar(df['Tháng'], df['Doanh thu'], color='skyblue')
plt.xlabel('Tháng')
plt.ylabel('Doanh thu')
plt.title('Biểu đồ doanh thu theo tháng')
plt.grid(axis='y', linestyle='--')
# Lưu biểu đồ
plt.savefig('doanh_thu_chart.png')
print('Đã tạo biểu đồ doanh thu_chart.png')
Sau đó, bạn có thể dùng openpyxl để chèn file ảnh doanh_thu_chart.png vào file Excel báo cáo.
Cách này giúp tự động hóa hoàn toàn quá trình tạo báo cáo, từ khâu lấy dữ liệu đến khâu trực quan hóa, tiết kiệm rất nhiều thời gian và công sức.
Anh em nào đã từng làm theo cách này hoặc có phương pháp nào hay hơn, chia sẻ thêm nhé!