Liste e righe ripetute
Quando il JSON contiene un array, di solito vuoi una riga di tabella per ogni elemento. Come lo scrivi dipende dal formato.
In Word
Usa una tabella con due righe marcatore attorno alla riga che si ripete:
| Riga | Contenuto |
|---|---|
| Intestazioni | Descrizione | Qtà | Totale |
| Apertura | {%tr for r in lines %} nella prima cella, il resto vuoto |
| Dati | {{ r.description }} | {{ r.quantity }} | {{ r.total }} |
| Chiusura | {%tr endfor %} nella prima cella, il resto vuoto |
Le righe di apertura e chiusura non compaiono nel PDF: vengono
consumate. La riga dei dati è duplicata una volta per elemento. Il nome dopo
for lo scegli tu, ed è quello che usi nella riga dei dati.
Se la tabella può allungarsi, segna la riga di intestazione come ripetuta. In Word: clic destro sulla riga → Proprietà tabella → scheda Riga → spunta Ripeti come riga di intestazione all'inizio di ogni pagina.
Senza, quando la tabella passa alla pagina successiva la seconda pagina comincia con righe di dati e senza i nomi delle colonne. È la svista più comune quando una tabella che conteneva una riga diventa ripetuta.
In HTML
<tbody>
{% for r in lines %}
<tr>
<td>{{ r.description }}</td>
<td>{{ r.quantity }}</td>
<td>{{ r.total }}</td>
</tr>
{% endfor %}
</tbody>
Metti la riga di intestazione in un <thead> e si ripete da sola su
ogni pagina.
Una tabella lunga: fissane l'impaginazione
Di norma un browser, e il nostro motore di impaginazione, misura ogni cella di una tabella prima di posizionare la prima riga, così che ogni colonna sia larga quanto il suo valore più lungo. Su una tabella di qualche centinaio di righe quella misura è la maggior parte del lavoro. Indica tu le larghezze e la tabella viene impaginata riga per riga:
<table style="table-layout: fixed; width: 100%">
<colgroup>
<col style="width: 60%"><col style="width: 15%"><col style="width: 25%">
</colgroup>
...
Su una tabella di 300 righe il PDF arriva circa un quarto più in fretta, con lo stesso contenuto. Un valore più lungo della sua colonna va a capo al suo interno invece di allargarla. Valida te lo ricorda quando una tabella con una riga ripetuta non ha un'impaginazione fissa.
In Excel
Nella colonna A della riga che apre il blocco scrivi {% row for r in sales %}, e nella colonna A della riga di chiusura {% endrow %}. Le righe in mezzo sono copiate per ogni elemento.
A1: Sales report
A3: {% row for s in sales %}
A4: {{ s.product }} B4: {{ s.quantity }} C4: {{ s.total }}
A5: {% endrow %}
Un array vuoto produce zero righe, e i marcatori scompaiono in ogni caso.
Tabella delle funzioni per formato: Che cosa sa fare ogni formato.