python reportlab 生成table学习笔记

利用python report生成table表格,需要定义表格的数据,表格的样式,最后利用doc.build方法生成文件。

在reportlab中文手册中描述table方法:

Table 初始化
Table(
data,
colWidths=None,
rowHeights=None,
style=None,
splitByRow=1,
repeatRows=0,
repeatCols=0,
rowSplitRange=None,
spaceBefore=None,
spaceAfter=None,
)
参数data是单元格值的序列,每个单元格值都应该使用str函数转换为字符串值,或者应该是一个
Flowable 实例(如Paragraph)或此类实例的列表(或元组)。如果一个单元格值是一个 Flowable 或
Flowable 的列表,这些单元格必须有一个确定的宽度,或者包含的列必须有一个固定的宽度。单元
格值的第一行在 data[0] 中,也就是说,单元格值是按行顺序排列的。i, jth.单元格值在data[i][j]中。
单元格值中的新行字符’\n’被视为行分割字符,并在draw时用于将单元格格式化为行。
其他参数是相当明显的,colWidths 参数是一个数字序列,也可能是None,代表列的宽度。在
colWidths 中的元素数决定了表中的列数。值为None意味着相应的列宽应该自动计算。
参数 rowHeights 是一个数字序列,也可能是None,代表行的高度。rowHeights
中的元素数决定了表中的行数。值为None意味着相应的行高应该自动计算。
参数 style 可以是表的初始样式。
splitByRow 参数只适用于太高和太宽而无法适应当前上下文的表格。
在这种情况下,你必须决定是向下和横向 “平铺”,还是横向然后向下。 这个参数是一个布尔值,表
示当当前绘图区域可用空间太小,而调用者希望Table进行分割时,Table应该先按行进行分割,再
按列进行分割。目前还没有实现按列分割Table,所以将splitByRow设置为False将导致NotImplem entedError。
参数repeatRows指定了当Table被要求拆分时应该重复的前导行的数量或元组。如果它是一个元组
,它应该指定哪些前导行应该被重复;这允许表的第一次出现比后来的分割部分有更多的前导行。
目前,repeatCols参数被忽略,因为Table不能按列进行拆分。
当在platypus故事中重新编排时,spaceBefore 和 spaceAfter 参数
可以用来在表格之前或之后放置额外的空间。
rowSplitRange参数可以用来控制表的分割,将表分割成它的行的子集;这可以防止分割太接近表的
开始或结束。
Table.setStyle(tblStyle)
这个方法将类TableStyle(下面讨论)的一个特定实例应用到Table实例中。这是让tables以一种很好的
格式化方式出现的唯一方法。
对setStyle方法的连续使用以加法的方式应用这些样式。也就是说,后面的应用会覆盖前面重叠的应
用。

TableStyle(commandSequence)
创建方法以参数命令序列为例初始化TableStyle。

这个类是通过传递给它一个commands序列来创建的,每个 command 是一个元组,由它的第一个元素识别,它是一个字符串;command元组的其余元素代表命令的起始和停止单元格坐标,可能还有厚度和颜色等。
LIST_STYLE = TableStyle(
[(‘LINEABOVE’,(0,0), (-1,0), 2, colors.green),
(‘LINEABOVE’, (0,1), (-1,-1), 0.25, colors.black),
(‘LINEBELOW’, (0,-1), (-1,-1), 2, colors.green),
(‘ALIGN’, (1,1), (-1,-1), ‘RIGHT’)]
)

这里(0,0), (-1,0), 是定义范围,前边是上坐标,后边是下坐标,每组坐标为(列,行)

生成文件如下:

首行合并,对齐,没有边框:(从0列1行开始加边框和内部的线,外边框改为0.5

结果为

加汉字

最后结果

Original: https://www.cnblogs.com/jilingxf/p/15857940.html
Author: jilingxf
Title: python reportlab 生成table学习笔记

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/609910/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球