Menu

Tự động hóa tạo file PDF báo cáo từ Excel bằng Python (Thư viện ReportLab)

Võ Thi Diệu 05/06/2026 08:13 496 lượt xem 3 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 xuất báo cáo định kỳ từ Excel ra file PDF để gửi cho khách hàng. Thay vì ngồi copy-paste thủ công, mình đã tìm tòi và thử nghiệm cách tự động hóa quy trình này bằng Python. Hôm nay, mình muốn chia sẻ với mọi người về một phương pháp khá hay sử dụng thư viện ReportLab.

ReportLab là một thư viện mạnh mẽ của Python cho phép tạo các file PDF một cách linh hoạt. Chúng ta có thể tùy chỉnh gần như mọi thứ, từ font chữ, màu sắc, bố cục cho đến việc chèn bảng biểu, hình ảnh từ dữ liệu Excel.

Các bước cơ bản để thực hiện:

  • Cài đặt ReportLab: Nếu chưa có, bạn có thể cài đặt dễ dàng bằng pip: pip install reportlab pandas openpyxl
  • Đọc dữ liệu Excel: Sử dụng thư viện pandas để đọc dữ liệu từ file Excel vào DataFrame.
  • Xử lý và định dạng dữ liệu: Tùy chỉnh cách dữ liệu sẽ hiển thị trên PDF.
  • Tạo PDF với ReportLab: Sử dụng các đối tượng của ReportLab như canvas, platypus (Paragraph, Table, Image...) để xây dựng nội dung PDF.
  • Xuất file PDF: Lưu lại file PDF sau khi đã hoàn thành.

Ví dụ đơn giản về cách tạo một bảng trong PDF từ DataFrame:

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
import pandas as pd

df = pd.read_excel('du_lieu_bao_cao.xlsx')

doc = SimpleDocTemplate('bao_cao.pdf', pagesize=letter)
styles = getSampleStyleSheet()

# Chuyển DataFrame thành danh sách các hàng để đưa vào bảng ReportLab
data = [df.columns.tolist()] + df.values.tolist()

table = Table(data)

# Thêm style cho bảng (tùy chọn)
# from reportlab.lib import colors
# table.setStyle(TableStyle([...]))

story = []
story.append(table)

doc.build(story)
print('Đã tạo xong báo cáo PDF!')

Cách này giúp tiết kiệm rất nhiều thời gian, đặc biệt khi bạn cần tạo ra nhiều báo cáo với cấu trúc tương tự nhau. Anh em nào đã từng làm hoặc có kinh nghiệm với ReportLab hoặc các thư viện PDF khác cho Python thì chia sẻ thêm nhé!

2

Hay quá bạn ơi! Mình cũng đang đau đầu với việc xuất báo cáo PDF thủ công đây.

Thấy bạn dùng ReportLab thấy khả thi ghê. Không biết ngoài việc tạo bảng biểu đơn giản, ReportLab có hỗ trợ vẽ biểu đồ trực tiếp vào PDF không? Mình muốn báo cáo có cả biểu đồ cho sinh động.

Cảm ơn bạn đã chia sẻ nhé!

3

Cái này hay nè! Mình cũng đang tìm cách để tự động hóa việc xuất báo cáo.

Bạn ơi, cho mình hỏi thêm là ReportLab có hỗ trợ định dạng các kiểu dữ liệu trong Excel sang PDF không, ví dụ như số có dấu phẩy, ngày tháng năm, hay tiền tệ đó? Mình lo là qua PDF nó bị mất định dạng đi.

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc xuất báo cáo PDF thủ công đây.

Thấy bạn dùng ReportLab thấy khả thi ghê. Không biết ngoài việc tạo bảng biểu đơn giản, ReportLab có hỗ trợ vẽ biểu đồ trực tiếp vào PDF không? Mình muốn báo cáo có cả biểu đồ cho sinh động.

1

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

Đăng nhập Đăng ký