python - 如何在没有行网格的情况下在reportlab中创建表?

时间:2021-02-13 15:30:38

标签: python reportlab invoice

我正在使用 django 创建发票网络应用程序。我使用 reportlab 生成 pdf 发票。我已经完成了所有工作,但客户想要从表格内的行中删除网格,我尝试用白色将它们着色,但我在图像中得到了这个结果

my reportlab invoice result

这是我的表格代码:

    def myTable(tabledata):
        colwidths = (60, 320, 60, 60)
        t = Table(tabledata, colwidths)
        t.hAlign = 'RIGHT'
        GRID_STYLE = TableStyle(
            [
                ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
                ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.white),

            ]
        )
        t.setStyle(GRID_STYLE)
        return t

1 个答案:

答案 0 :(得分:0)

一种方法是使用 color.hexcolor() 并使用透明颜色。 透明白色将是:

colors.HexColor('#00FFFFFF') 

以下是您的代码在内部网格设置为透明的情况下的样子:

def myTable(tabledata):
    colwidths = (60, 320, 60, 60)
    t = Table(tabledata, colwidths)
    t.hAlign = 'RIGHT'
    GRID_STYLE = TableStyle(
        [
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.HexColor('#00FFFFFF')),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ]
    )
    t.setStyle(GRID_STYLE)
    return t

如果你想保留列分隔符:

def myTable(tabledata):
    colwidths = (60, 320, 60, 60)
    t = Table(tabledata, colwidths)
    t.hAlign = 'RIGHT'
    GRID_STYLE = TableStyle(
        [
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.HexColor('#00FFFFFF')),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
            ('LINEAFTER', (0,0), (-1,-1), 0.25, colors.black),

        ]
    )
    t.setStyle(GRID_STYLE)
    return t