Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple tables (5) on one page using ReportLab

I have the following code in Python to generate two tables using ReportLab.

Is there a way to position these two tables side by side using ReportLab?

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'],
   ['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'],
   ['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'],
   ['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']]
   
t=Table(data,5*[0.3*inch], 4*[0.2*inch])
t.setStyle(TableStyle([
        ('BACKGROUND',(0,0),(4,0),colors.gray),
                   ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                   ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                   ]))

elements.append(t)

data= [['100', '01', '02', '03', '04'],
   ['10', '11', '12', '13', '14'],
   ['20', '21', '22', '23', '24'],
   ['30', '31', '32', '33', '34']]
   
t=Table(data,5*[0.3*inch], 4*[0.2*inch])
t.setStyle(TableStyle([
        ('BACKGROUND',(0,0),(4,0),colors.gray),
                   ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                   ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                   ]))

elements.append(t)

doc.build(elements)
like image 976
Joel James Avatar asked Oct 12 '12 16:10

Joel James


1 Answers

Create a third table that will serve as the shell for the two tables you created. This table will have two columns and one row. Each column will be the size of the respective child table.

Example:

create your two tables in different table vars (e.g. table1, table2)

t1_w = <your first table width size>
t2_w = <your second table width size>
data = [[table1, table2]]
shell_table = Table(data, colWidths=[t1_w, t2_w])
like image 173
Hassan Avatar answered Sep 24 '22 05:09

Hassan