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é!