reportlab 庫生成帶有表格的PDF報表檔案
用reportlab 庫生成PDF檔案的確很方便,對於簡單的PDF檔案的生成,可以直接使用最基本的一些drawXXX()方法來實現,具有可參見我的另一篇文章(https://blog.csdn.net/cloveses/article/details/79224057)但有時我們需要生成帶有表格的報表,經過閱讀官方文件,發現reportlab 庫可以直接支援生成表格,而且還可以完成較為複雜的表格的生成。現就相關使用方法介紹如下:
一、生成PDF基本流程
1.匯入相關的物件:
from reportlab.lib.styles import getSampleStyleSheet,ParagraphStyle from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer,Table,TableStyle,PageBreak from reportlab.pdfbase import pdfmetrics from reportlab.lib import colors from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.pagesizes import A4
2.生成簡單文件模板
doc = SimpleDocTemplate(file_name,pagesize=(A4[1],A4[0]),topMargin = 15,bottomMargin = 15)
#後面引數中pagesize為文件頁面尺寸,topMargin/bottomMargin為文件上/下頁邊距,當然還有一些其他引數,可參考官方文件。
3.建立頁面中需要渲染的各種元素,如段落文字、表格等,並放入一個列表中。
elements = []
pa = Paragraph('TEXT',stylesheet['Normal'])
elements.append(pa)
...
4.呼叫簡單文件模板物件的方法,傳入要渲染元素的列表,生成PDF檔案。
doc.build(elements)
二、常用的基本元素主要有:
Paragraph 文字段落 Paragraph(text,style)
Spacer 垂直空間留白 Spacer(width, height)
Table 表格 Table(data)
PageBreak 插入分頁 PageBreak()
Image 圖片 Image(filename, width=None, height=None)
三、樣式的使用
這裡主要說明一下文字段落和表格的樣式:
1.直接使用reportlab庫提供的預定義的文字段落樣式:
style=getSampleStyleSheet()
這樣style物件中包含了一些常用的段落文字的預定義樣式,其類似一個字典,使用方法如下:
style['Title']
可以通過呼叫style例項的list()方法,檢視所有的樣式及其每個屬性的值。當然還可以通過修改預定義樣式,來實現自定義樣式。如下圖所示:
2.表格樣式的使用方法如下:
#定義樣式列表,其中每元組包括樣式命令詞、樣式應用起始單元座標、樣式應用結束單元座標和樣式值。(具體樣式命令詞請叄閱官方文件)
style_list =[
('TEXTCOLOR',(0,0),(1,-1),colors.red),
('ALIGN',(0,0),(-1,-1),'CENTER'),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
('GRID',(0,0), (-1,-1),1,colors.black),
('FONTSIZE',(0,0),(-1,-1),10),
('FONT', (0,0), (-1,-1), 'msyh'),
('BOTTOMPADDING',(0,0),(-1,-1),2),
('TOPPADDING',(0,0),(-1,-1),2)]
#建立表格樣式物件
mytab_style = TableStyle(style_list)
#建立表格
mytable = Table(data_list)
# 將樣式應用到表格
mytable.setStyle(mytab_style)
表格的樣式命令詞主要有表格線顏色、對齊方式、文字顏色、字型及大小、單元格合併(SPAN)等。生成的例表如下圖: