我在python中有以下代码,使用ReportLab生成两个表。有没有办法使用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)
答案 0 :(得分:4)
创建第三个表,该表将用作您创建的两个表的shell。该表将有两列和一行。每列将是相应子表的大小。
示例:
在不同的表格变量中创建两个表格(例如 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])
答案 1 :(得分:2)
例:
*整个代码
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 = []
data1 = [['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']]
t1 = Table(data1, 5 * [0.3 * inch], 4 * [0.2 * inch])
t1.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),
]))
data2 = [['100', '01', '02', '03', '04'],
['10', '11', '12', '13', '14'],
['20', '21', '22', '23', '24'],
['30', '31', '32', '33', '34']]
t2 = Table(data2, 5 * [0.4 * inch], 4 * [0.2 * inch])
t2.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),
]))
data = [[t1, t2]]
# adjust the length of tables
t1_w = 3 * inch
t2_w = 3 * inch
shell_table = Table(data, colWidths=[t1_w, t2_w])
elements.append(shell_table)
doc.build(elements)