Skip to main content
 首页 » 编程设计

python之如何为表的偶数行和奇数行定义样式(python reportlab)

2025年05月04日19EasonJim

我必须打印一份可能有数百行长的报告。它的特殊性是每一项的内容要分两行打印。这些线条具有特定的风格。

示例:

line 1 : First Header line  
line 2 : Second Header line  
line 3 : Name , adress 
line 4 : birth date , gender, hobbies  
line 5 : Name , adress 
line 6 : birth date , gender, hobbies  
... 

我使用表格来处理每页内容。

在样式定义中,我有这样的东西:

('FONTSIZE',(0,2),(-1,-1),18) 

但我希望这种样式适用于所有偶数行和像这样的样式

('FONTSIZE',(0,2),(-1,1),12) 

适用于所有赔率行。

最好是这两种样式适用于整个表格,除了包含表格标题的第一行和第二行。

请您参考如下方法:

您可以通过使用基于行号生成表格样式的代码来实现这一点。 Reportlab 确实有一个内置功能,可以自动为行和颜色交替背景颜色(在用户手册中查找 ROWBACKGROUNDS 和 COLBACKGROUNDS),但对于任意样式,您您必须通过遍历数据行来执行如下自定义操作。

table_style = [...] 
 
for i, row in enumerate(table_rows): 
  if i % 2 == 0: 
    table_style.append(('FONTSIZE',(0,i),(-1,i),18)) 
  else: 
    table_style.append(('FONTSIZE',(0,i),(-1,i),12)) 
 
my_table.setStyle(TableStyle(table_style))