[Python-es] Reportlab - Contenido de Tablas sin ajuste a celdas

Roldan Darío Vargas Gómez roldandvg en gmail.com
Vie Jul 20 17:46:03 CEST 2012


Disculpen la falta de tacto en la resolución del problema.

Gracias al indicio de como buscar ofrecido por José Caballero pude
identificar la manera correcta de generar el reporte. La solución al mismo
fue bastante sencilla, el código es el siguiente:

--------------------///----------------------///--------------------------///------------------------

from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.pagesizes import LETTER, landscape, portrait
from reportlab.lib.enums import TA_CENTER

estiloHoja = getSampleStyleSheet()
story = []

#Estilos de la tabla para cabeceras y datos
thead = estiloHoja["Normal"]
thead.alignment=TA_CENTER
tbody = estiloHoja["BodyText"]
tbody.alignment=TA_LEFT

#donde textox_bd es el texto que proviene directamente de la BD
datos =
[[Paragraph(str(texto1_bd),thead),Paragraph(str(texto2_bd),thead),Paragraph(str(texto3_bd),thead)],

 [Paragraph(texto4_bd,tbody),Paragraph(texto5_bd,tbody),Paragraph(texto6_bd,tbody)]]

tabla = Table(data=datos,colWidths=[80,450,50])
tabla.setStyle(TableStyle([('INERGRID', (0,0),(-1,-1),0.25, color.black),

 ('BOX',(0,0),(-1,-1),0.25,color.black),]))

story.append(tabla)

doc = SimpleDocTemplate("reporte.pdf",pagesize=portrait(LETTER),
leftMargin=1, rightMargin=1, topMargin=2, bottomMargin=2)
doc.build(story)
*
*
--------------------///----------------------///--------------------------///------------------------

El resultado en el archivo PDF se puede ver de la siguiente manera:

______________________________________
*| encabezado1 | encabezado2 | encabezado3 |*
| ejemplo txt    | texto 2           | este texto     |
|                     |                      | deb|ería ir en |
|                     |                      | la siguiente   |
|                     |                      | línea de esta |
*|                     |                      | celda            |*
*
*
--------------------///----------------------///--------------------------///------------------------

La solución al inconveniente fue tan sencilla como hacer uso de la clase
Paragraph la cual ajusta el texto a las dimensiones de la celda en la que
se encuentre.

Espero que sea de utilidad para cualquiera que se encuentre con este
inconveniente, que a simple vista no parece sencillo pero que en realidad
(indagando un poco) si lo es.

Saludos y feliz tarde
*
--------------------------------------
Ing. Roldan D. Vargas G.
Analista Desarrollador
Linux Counter 400001*


El 20 de julio de 2012 04:05, Marcos Sánchez Provencio
<rapto en arrakis.es>escribió:

> El 19/07/12 21:40, Roldan Darío Vargas Gómez escribió:
>
>  Buenas tardes
>>
>> Gracias por indicarme el camino a seguir para solventar el inconveniente
>> presentado, me fue de mucha utilidad para realizar los correctivos
>> necesarios y así obtener la salida esperada.
>>
>>
>>  Y la costumbre indica que tienes que contarnos cómo lo has
> solucionado... ;)
>
> ______________________________**_________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/**mailman/listinfo/python-es<http://mail.python.org/mailman/listinfo/python-es>
> FAQ: http://python-es-faq.wikidot.**com/<http://python-es-faq.wikidot.com/>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20120720/7cd1ab5e/attachment.html>


Más información sobre la lista de distribución Python-es