Python 2.7 PythonReportLab,在pdf中并排添加两个表

Python 2.7 PythonReportLab,在pdf中并排添加两个表,python-2.7,reportlab,Python 2.7,Reportlab,我试图使用PythonReportLab在pdf中插入两个表。 第二个表中的行数小于第一个表中的行数。 但两张桌子的水平位置不匹配。 第二张桌子上有一些空的地方 如何删除此空间,使两个表水平对齐 from reportlab.lib import colors from reportlab.lib.pagesizes import letter, inch from reportlab.platypus import SimpleDocTemplate, Table, TableStyle d

我试图使用PythonReportLab在pdf中插入两个表。 第二个表中的行数小于第一个表中的行数。
但两张桌子的水平位置不匹配。 第二张桌子上有一些空的地方

如何删除此空间,使两个表水平对齐

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

doc = SimpleDocTemplate("simple_table_grid.pdf", pagesize=letter)

elements = []

data= [['00', '01', '02', '03', '04'],
   ['10', '11', '12', '13', '14'],
   ['20', '21', '22', '23', '24'],
   ['30', '31', '32', '33', '34']]

data1= [['00', '01', '02', '03', '04'],
   ['10', '11', '12', '13', '14']]

t1=Table(data,5*[0.4*inch], 4*[0.4*inch],hAlign='LEFT')

t1.setStyle(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),
                   ]))

t2=Table(data1,5*[0.4*inch], 2*[0.4*inch],hAlign='RIGHT')

t2.setStyle(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),
                   ]))
t = [[t1,t2]]

temp = Table(t)                  

elements.append(temp)

doc.build(elements) 

要使两个表水平,我认为不可能使用reportLab。 我也有同样的问题,我找到了解决的方法。 我只创建了一个表来表示这两个表,我将网格隐藏在这两个表之间,所以看起来像是两个表。使用该解决方案,您可以按所需方式定位这两个表。 我的setStyle()看起来是这样的

        t.setStyle(TableStyle([
                           ('GRID', (0,0), (4,1), 0.5, colors.black),
                            ('ALIGN',(1,1),(-1,-1),'CENTER'),
                            ('BACKGROUND',(0,0),(4,0),colors.lightgrey),
                            ('BACKGROUND',(3,3),(3,5),colors.lightgrey),
                            ('BOX',(3,3),(3,5),0.5,colors.black),
                            ('BOX',(4,3),(4,5),0.5,colors.black)]))

嗯,有一个解决办法。 您可以将表添加到另一个包含两列和一行的表中。 像这样的

    data= [(t1, t2)]
    t = Table(data, [250, 250])
    t.setStyle(TableStyle([
               ('VALIGN',(0,0),(-1,-1),'TOP')
               ]))

我不清楚你想要什么。你想让t1和t2在同一条线上(t1在左边,t2在右边)并且你关心t1和t2之间的空间吗?还是要t1在顶部,t2在底部?在这种情况下,“水平对齐”对我来说更有意义。是的,我希望t1和t2在同一条线上。但是发生了什么,当t2包含的行数少于t1,那么t1和t2就不是从同一行开始的。好的,那么你想垂直对齐t1和t2,对吗?通过将样式
表样式([('VALIGN',(0,0),(-1,-1),'top')])
添加到表
temp
,可以在顶行对齐它们。