Menu

Tự động hóa tạo file PDF từ dữ liệu Excel bằng Python: Hướng dẫn cơ bản

Giang Tuyền Uyển 02/04/2026 20:48 403 lượt xem 1 trả lời

Chào mọi người,

Dạo này mình có làm việc nhiều với việc xuất báo cáo từ Excel ra file PDF để gửi cho khách hàng. Thay vì làm thủ công từng file, mình đã tìm hiểu và áp dụng Python để tự động hóa quá trình này. Hôm nay mình muốn chia sẻ với mọi người một chút về cách làm cơ bản.

Chúng ta sẽ sử dụng thư viện reportlab để tạo PDF và pandas để đọc dữ liệu Excel.

Các bước thực hiện chính:

  • Cài đặt thư viện: pip install pandas reportlab
  • Đọc dữ liệu Excel bằng pandas: df = pd.read_excel('du_lieu.xlsx')
  • Khởi tạo đối tượng PDF và thêm nội dung.
  • Lặp qua các dòng dữ liệu và ghi vào PDF.
  • Lưu file PDF.

Ví dụ đơn giản để tạo một bảng trong PDF:

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
import pandas as pd

df = pd.read_excel('du_lieu.xlsx')
data = [df.columns.tolist()] + df.values.tolist()

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

table = Table(data)
table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), '#d3d3d3'),
    ('TEXTCOLOR',(0,0),(-1,0), '#000000'),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
    ('BOTTOMBORDER', (0,0), (-1,0), 1, '#000000'),
    ('GRID', (0,0), (-1,-1), 1, '#000000')
]))

story = []
story.append(table)
doc.build(story)

print('Đã tạo xong bao_cao.pdf!')

Đây mới chỉ là những bước cơ bản nhất. Mọi người có thể tùy chỉnh thêm nhiều thứ như thêm biểu đồ, header, footer, thay đổi font chữ, màu sắc... tùy theo nhu cầu. Nếu ai có kinh nghiệm hoặc muốn thảo luận sâu hơn về các thư viện PDF khác như FPDF hay các kỹ thuật nâng cao hơn, hãy cùng chia sẻ nhé!

4

Hay quá bạn ơi! Mình cũng đang đau đầu vụ xuất báo cáo PDF thủ công mỗi lần. Python nghe có vẻ hay ho đấy. Bạn có thể chia sẻ thêm ví dụ về cách dùng reportlab để định dạng bảng biểu trong PDF không? Mình muốn làm cho nó trông chuyên nghiệp hơn một chút.

1

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

Đăng nhập Đăng ký