ReportLab表格布局

时间:2018-02-19 11:36:24

标签: python reportlab

如何编辑此代码,使其包含7列和5行,列名显示在顶部?

# PDF document layout
table_style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
                       ('TEXTCOLOR',(1,1),(-2,-2),colors.red),
                       ('VALIGN',(0,0),(0,-1),'TOP'),
                       ('TEXTCOLOR',(0,0),(0,-1),colors.blue),
                       ('ALIGN',(0,-1),(-1,-1),'CENTER'),
                       ('VALIGN',(0,-1),(-1,-1),'MIDDLE'),
                       ('TEXTCOLOR',(0,-1),(-1,-1),colors.green),
                       ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                       ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                       ])

1 个答案:

答案 0 :(得分:0)

数据的形状定义了ReportLab中表格的形状。表数据可以存储在列表列表中。列表中的每个列表都是一行(元组也可以工作)。这是一个例子:

data = [['00', '01', '02', '03', '04'], # First row or headers
        ['10', '11', '12', '13', '14'], # Second row
        ['20', '21', '22', '23', '24'], # Third row
        ['30', '31', '32', '33', '34'],] # Fourth row

更多信息,请参见此处提供的文档的第84页:https://www.reportlab.com/docs/reportlab-userguide.pdf

在您的示例中,您将展示如何定义表格的样式或外观。索引[1]和[2]中的2元组定义了格式应适用的单元格范围。第一个2元组是(开始列,开始行),第二个2元组是(结束列,结束行)。您可以将此视为使用鼠标从电子表格中选择一系列单元格,从第一个单元格开始,然后在第二个单元格处停止。负索引也可以像在Python中用于列表一样使用。

以下示例是包含7列和任意行数的表。第一行是标题。

all_cells = [(0, 0), (-1, -1)] 
header = [(0, 0), (-1, 0)]
column0 = [(0, 0), (0, -1)]
column1 = [(1, 0), (1, -1)]
column2 = [(2, 0), (2, -1)]
column3 = [(3, 0), (3, -1)]
column4 = [(4, 0), (4, -1)]
column5 = [(5, 0), (5, -1)]
column6 = [(6, 0), (6, -1)]
table_style = TableStyle([
    ('VALIGN', all_cells[0], all_cells[1], 'TOP'),
    ('LINEBELOW', header[0], header[1], 1, colors.black),
    ('ALIGN', column0[0], column0[1], 'LEFT'),
    ('ALIGN', column1[0], column1[1], 'LEFT'),
    ('ALIGN', column2[0], column2[1], 'LEFT'),
    ('ALIGN', column3[0], column3[1], 'RIGHT'),
    ('ALIGN', column4[0], column4[1], 'RIGHT'),
    ('ALIGN', column5[0], column5[1], 'LEFT'),
    ('ALIGN', column6[0], column6[1], 'RIGHT'),
])