我正在尝试使用python reportlab在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)
答案 0 :(得分:0)
要使2个表水平,我认为不可能使用reportLab。 我有同样的问题,我找到了解决问题的方法。 我只创建一个表来表示两个表,我隐藏了2之间的网格,所以它看起来像是2个表。使用该解决方案,您可以按照自己的方式定位2个表。 我的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)]))
答案 1 :(得分:0)
嗯,有一种解决方法。 您可以将表添加到具有两列和一行的另一个表中。 像这样的东西。
data= [(t1, t2)]
t = Table(data, [250, 250])
t.setStyle(TableStyle([
('VALIGN',(0,0),(-1,-1),'TOP')
]))