Несколько таблиц (5) одна страница с использованием ReportLab

У меня есть следующий код в 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)
 Nitzle12 окт. 2012 г., 21:45
Вы пробовали использовать фреймы? Вы можете расположить 2 кадра рядом друг с другом и либо настроить ширину таблицы, чтобы заполнить каждый кадр (чтобы заставить отчет рисовать следующий), либо вручную добавить FrameBreak, чтобы перейти к следующему. Я должен быть в состоянии выработать пример позже сегодня вечером, если никто не ответит к тому времени.

Ответы на вопрос(2)

которая будет служить оболочкой для двух созданных вами таблиц. Эта таблица будет иметь два столбца и одну строку. Каждый столбец будет размером соответствующей дочерней таблицы.

Пример:

создайте две таблицы в разных таблицах (например,Таблица 1, Таблица 2)

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])

Пример:
* весь код

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)
 radtek21 янв. 2015 г., 20:42
прекрасно работает, но не может получить изображение и абзац в одной строке

Ваш ответ на вопрос