Python 2.7 PythonReportLab,在pdf中并排添加两个表
我试图使用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
但两张桌子的水平位置不匹配。 第二张桌子上有一些空的地方 如何删除此空间,使两个表水平对齐
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
,可以在顶行对齐它们。