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)等。

生成的例表如下图:




猜你喜欢

转载自blog.csdn.net/cloveses/article/details/79667247