2015-06-16 5 views
0

Я пытаюсь вставить две таблицы в pdf, используя python reportlab. Число строк во второй таблице меньше, чем первая таблица.
Но горизонтальное положение двух таблиц не соответствует. Некоторое пустое пространство, идущее на второй стол.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

Мне непонятно, что вы хотите. Вы хотите, чтобы t1 и t2 находились на одной линии (t1 слева, t2 справа), и вы занимаетесь пространством между t1 и t2? Или вы хотите, чтобы t1 сверху и t2 внизу? В этом случае «выравнивание по горизонтали» будет иметь для меня больше смысла. – Denis

+0

Да, я хочу t1 и t2 в одной строке. , но что происходит, когда t2 содержит меньшее количество строк, чем t1, то t1 и t2 не начинаются с той же строки. – s28

+1

Хорошо, тогда вы хотите выровнять t1 и t2 * по вертикали *, правильно? Вы можете выровнять их в верхней строке, добавив стиль 'TableStyle ([('VALIGN', (0,0), (-1, -1), 'TOP')])' в таблицу 'temp'. – Denis

ответ

0

Чтобы иметь 2 горизонтальных стола, я не думаю, что это можно сделать с помощью reportLab. У меня вроде такая же проблема, я нашел способ ее разрешить. Я создаю только одну таблицу для представления обеих таблиц, и я прячу сетку между ними, так что это выглядит как две таблицы. С помощью этого решения вы можете разместить 2 таблицы так, как вы хотите. My 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)])) 
Смежные вопросы