Dataframe для GRID в PDF с использованием ReportLab.Как я могу разбить строку в столбце в сетке - PullRequest
1 голос
/ 04 июня 2019

Мне нужен разрыв в сетке, потому что значение столбца слишком велико, чтобы поместить его в PDF:

enter image description here

Мой код:

for i, (_, rowCampos) in enumerate(dfBaseCampos.iterrows()):
    dados.append([str(rowCampos['CAMPO']),
    str(rowCampos['DESC_CAMPO']),
    str(rowCampos['TIPO_CAMPO'])])

tabela = Table(dados, style=([
    ('GRID', (0, 0), (-1, -1), 0.25, colors.black),
    ('BOX', (0, 0), (-1, -1), 0.25, colors.black, None, (2, 2, 1)),
    ('BACKGROUND', (2, 0), (2, 0), colors.lightcyan),
    ('BACKGROUND', (0, 0), (0, 0), colors.lightcyan),
    ('BACKGROUND', (1, 0), (1, 0), colors.lightcyan),
    ('FONTSIZE', (0, 0), (-1, -1), 5),
    ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black)
]))

1 Ответ

0 голосов
/ 04 июня 2019

Вам необходимо использовать объект Flowable, например Paragraph.

l1 = Paragraph("Hello python", styles['Normal'])

Это решение работает для меня:

from reportlab.platypus import Paragraph
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Table, TableStyle
from reportlab.lib import colors

styles = getSampleStyleSheet()
for i, (_, rowCampos) in enumerate(dfBaseCampos.iterrows()):
    l1 = Paragraph(str(rowCampos['CAMPO']), styles['Normal'])
    l2 = Paragraph(str(rowCampos['DESC_CAMPO']), styles['Normal'])
    l3 = Paragraph(str(rowCampos['TIPO_CAMPO']), styles['Normal'])
    dados.append([l1, l2, l3])

tabela =Table(dados)
tabela.setStyle(TableStyle([
    ('GRID', (0, 0), (-1, -1), 0.25, colors.black),
    ('BOX', (0, 0), (-1, -1), 0.25, colors.black, None, (2, 2, 1)),
    ('BACKGROUND', (2, 0), (2, 0), colors.lightcyan),
    ('BACKGROUND', (0, 0), (0, 0), colors.lightcyan),
    ('BACKGROUND', (1, 0), (1, 0), colors.lightcyan),
    ('FONTSIZE', (0, 0), (-1, -1), 5),
    ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black)
]))
...