Chào các bác, dạo này em thấy nhiều bài viết về tự động hóa trong Excel với Python hay quá, nên cũng muốn đóng góp một chút kinh nghiệm cá nhân.
Công việc của em thỉnh thoảng cần xuất dữ liệu từ Excel ra file PDF để gửi cho khách hàng hoặc lưu trữ. Làm thủ công thì mất thời gian, mà còn dễ sai sót. Em đã tìm tòi và phát hiện ra một cách khá hay để tự động hóa việc này bằng Python.
Về cơ bản, chúng ta sẽ dùng thư viện pandas để đọc dữ liệu từ file Excel, sau đó dùng thư viện reportlab để tạo file PDF.
Các bước chính sẽ như sau:
- Cài đặt các thư viện cần thiết:
pip install pandas reportlab - Đọc dữ liệu từ file Excel bằng
pandas.read_excel() - Khởi tạo đối tượng PDF bằng
reportlab.platypus.SimpleDocTemplate - Tạo các phần tử cho PDF (văn bản, bảng biểu)
- Thêm bảng biểu từ dữ liệu DataFrame của pandas 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
from reportlab.lib import colors
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), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
('GRID', (0, 0), (-1, -1), 1, colors.black)
]))
story = []
story.append(table)
doc.build(story)
print('Đã tạo file bao_cao.pdf thành công!')Cách này giúp em tiết kiệm được kha khá thời gian và giảm thiểu sai sót khi tạo báo cáo PDF. Các bác nào có kinh nghiệm hoặc có cách nào hay hơn thì chia sẻ thêm cho em học hỏi với ạ!