2012-12-19 10 views
8

che sto definendo questo stile nel documento:Cosa determina lo spazio verticale nelle tabelle Reportlab?

styles.add(ParagraphStyle(name='Table Header', font ='Helvetica-Bold',fontSize=16, alignment=TA_CENTER)) 

Io lo uso per definire i punti per il testo di andare nella fila superiore di ogni tabella (in modo da avvolgere correttamente):

L2sub = [(Paragraph(L[0][0], styles['Table Header']))] 

Più tardi, quando aggiungo un tavolo, c'è anche un luogo per definire gli stili:

report.append(Table(data,style=[ 
       ('GRID',(0,0),(len(topiclist)-1,-1),0.5,colors.grey), 
       ('FONT', (0,0),(len(topiclist)-1,0),'Helvetica-Bold',16), 
       ('FONT', (0,1),(len(topiclist)-1,1),'Helvetica-Bold',12), 
       ('ALIGN',(0,0),(-1,-1),'CENTER'), 
       ('VALIGN',(0,0),(-1,-1),'MIDDLE'), 
       ('SPAN',(0,0),(len(topiclist)-1,0)), 
       ])) 

la mia domanda è: dove è il settin g che definisce l'altezza verticale delle celle sulla prima riga? Sto riscontrando alcuni problemi con il testo che è troppo grande per la cella e/o impostato troppo basso nella cella, ma non riesco a definire cosa sta causando o cosa fare per risolverlo. Ho cambiato entrambe le dimensioni, ma non riesco a far sì che le celle siano diverse dalla stessa altezza. Quando ho inserito il testo nelle celle invece dei paragrafi, la tabella def'n ha funzionato bene, ma i paragrafi hanno causato il problema.

+0

La mia comprensione è che se non si utilizzano i paragrafi e si inserisce direttamente il testo nelle celle della tabella, il confezionamento può avvenire automaticamente. I paragrafi, avendo una propria logica di wrapping, hanno bisogno di uno spazio fisso in cui lavorare. Quindi, perché stai usando i paragrafi "in modo che si avvolgano correttamente"? –

+0

Questa non è stata la mia esperienza: avevo i tavoli che oltrepassavano i limiti della pagina perché non erano avvolgenti, finché non ho inserito il testo in paragrafi. Ho avuto questa idea da un'altra domanda SO. – DeltaG

risposta

5

Non credo ci sia un'impostazione in TableStyle che consente di modificare l'altezza della riga. Che la misurazione è dato quando si sta creando un nuovo Table oggetto:

Table(data, colwidths, rowheights) 

Dove colwidths e rowheights sono gli elenchi dei valori di misura, in questo modo:

from reportlab.lib.units import inch 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.platypus import Paragraph 
from reportlab.platypus import Table 
from reportlab.lib import colors 

# Creates a table with 2 columns, variable width 
colwidths = [2.5*inch, .8*inch] 

# Two rows with variable height 
rowheights = [.4*inch, .2*inch] 

table_style = [ 
    ('GRID', (0, 1), (-1, -1), 1, colors.black), 
    ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), 
    ('ALIGN', (1, 1), (1, -1), 'RIGHT') 
] 

style = getSampleStyleSheet() 

title_paragraph = Paragraph(
    "<font size=13><b>My Title Here</b></font>", 
    style["Normal"] 
) 
# Just filling in the first row 
data = [[title_paragraph, 'Random text string']] 

# Now we can create the table with our data, and column/row measurements 
table = Table(data, colwidths, rowheights) 

# Another way of setting table style, using the setStyle method. 
table.setStyle(tbl_style) 

report.append(table) 

colwidths e rowheights può essere modificato a qualsiasi misura è necessario adattare il contenuto. colwidths legge da sinistra a destra e rowheights legge dall'alto in basso.

Se si sa che tutte le righe della tabella stanno per essere alla stessa altezza, è possibile utilizzare questa bella scorciatoia:

rowheights = [.2*inch] * len(data) 

che vi dà una lista come [.2*inch, .2*inch, ...] per ogni riga nella variabile data.

Problemi correlati