Tabelle nei modelli - Guida alle tabelle dinamiche
Le tabelle sono componenti fondamentali dei documenti professionali, in quanto forniscono una presentazione strutturata dei dati per facilitarne il confronto, la consultazione e l'analisi. PDF4meIl motore di generazione documenti di crea in modo efficiente tabelle dinamiche popolate con dati provenienti dalle tue fonti.
Struttura della tabella a più colonne
Genera tabelle con più colonne definendo campi di unione all'interno delle celle della tabella. Ogni riga si ripete in base alla raccolta dei dati.
Sintassi di base delle tabelle
Crea una struttura di tabella nel tuo Word modello con il seguente schema:
Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>
Struttura del modello:
- Crea una tabella in Word con il numero di colonne desiderato
- Posiziona il ciclo foreach nella prima cella
- Aggiungi campi di unione nelle celle successive della stessa riga
- Chiudi ogni ciclo foreach nell'ultima cella
Esempio: Tabella di inventario dei prodotti
Fonte dati (JSON):
{
"vendorName": "Instamart",
"products": [
{
"productName": "Laptops",
"price": 160000,
"manufactured": "25/07/2022"
},
{
"productName": "Keyboard",
"price": 10000,
"manufactured": "12/04/2022"
},
{
"productName": "Speakers",
"price": 25000,
"manufactured": "08/05/2022"
}
]
}
Output generato:
| Nome del prodotto | Prodotto | Prezzo |
|---|---|---|
| Computer portatili | 25/07/2022 | 160000 |
| Tastiera | 12/04/2022 | 10000 |
| Relatori | 08/05/2022 | 25000 |
Tabelle di calcoli e totali
Calcola valori aggregati come somme, medie e conteggi all'interno delle strutture delle tue tabelle utilizzando metodi di enumerazione.
Calcolo della somma
Aggiungi una riga "Totale" per calcolare la somma delle colonne numeriche:
Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>
Column 1: Total
Column 2:
Column 3: $<<[products.Sum(c => c.price)]>>
Output generato:
| Nome del prodotto | Prodotto | Prezzo |
|---|---|---|
| Computer portatili | 25/07/2022 | 160000 |
| Tastiera | 12/04/2022 | 10000 |
| Relatori | 08/05/2022 | 25000 |
| Totale | $195000 |
Altre funzioni aggregate
Media:
Average Price: $<<[products.Average(p => p.price)]:"F2">>
Contare:
Total Products: <<[products.Count()]>>
Massimo:
Highest Price: $<<[products.Max(p => p.price)]>>
Minimo:
Lowest Price: $<<[products.Min(p => p.price)]>>
Tabelle a colonna singola
Genera tabelle con una singola colonna contenente più righe di informazioni per riga. Usa il -greedy Impostare la modalità per garantire che ogni elemento della collezione occupi una riga.
Sintassi del modello a colonna singola
<<foreach [product in products]>>Product: <<[product.productName]>>, Manufactured On: <<[product.manufactured]:"yyyy.MM.dd">>, Product Price: $<<[product.price]>><</foreach -greedy>>
Punto chiave: IL -greedy L'opzione switch tratta l'intero blocco di contenuto come un'unica riga, evitando interruzioni di riga indesiderate.
Output generato:
| Dettagli del prodotto |
|---|
| Prodotto: Computer portatili, Data di fabbricazione: 25/07/2022, Prezzo del prodotto: $ 160000 |
| Prodotto: Tastiera, Data di fabbricazione: 12/04/2022, Prezzo del prodotto: $10000 |
| Prodotto: Altoparlanti, Data di fabbricazione: 08/05/2022, Prezzo del prodotto: $25000 |
Esempi di tabelle avanzate
Esempio 1: Tabella delle voci della fattura
Modello:
Item | Description | Qty | Unit Price | Total
<<foreach [item in lineItems]>><<[item.code]>> | <<[item.description]>> | <<[item.quantity]>> | $<<[item.unitPrice]:"F2">> | $<<[item.quantity * item.unitPrice]:"F2">><</foreach>>
| | | Subtotal: | $<<[lineItems.Sum(i => i.quantity * i.unitPrice)]:"F2">>
Esempio 2: Tabella dell'elenco dei dipendenti
Modello:
Name | Department | Email | Phone
<<foreach [emp in employees.OrderBy(e => e.lastName)]>><<[emp.firstName]>> <<[emp.lastName]>> | <<[emp.department]>> | <<[emp.email]>> | <<[emp.phone]>><</foreach>>
Total Employees: <<[employees.Count()]>>
Esempio 3: Tabella del rapporto vendite
Modello:
Month | Revenue | Expenses | Profit
<<foreach [month in salesData]>><<[month.name]>> | $<<[month.revenue]:"F2">> | $<<[month.expenses]:"F2">> | $<<[month.revenue - month.expenses]:"F2">><</foreach>>
Annual Total | $<<[salesData.Sum(m => m.revenue)]:"F2">> | $<<[salesData.Sum(m => m.expenses)]:"F2">> | $<<[salesData.Sum(m => m.revenue - m.expenses)]:"F2">>
Righe di tabella condizionali
Genera righe di tabella in modo condizionale in base alle proprietà dei dati o alla logica aziendale.
Righe filtrate
Modello:
Product | Stock Status
<<foreach [product in products.Where(p => p.inStock == true)]>>
<<[product.name]>> | Available
<</foreach>>
Formattazione condizionale
Modello:
Employee | Status
<<foreach [emp in employees]>>
<<[emp.name]>> | <<if [emp.active]>>Active<<else>>Inactive<</if>>
<</foreach>>
Procedure consigliate per la formattazione delle tabelle
Linee guida di progettazione
- Righe di intestazione - Creare intestazioni di colonna chiare e descrittive
- Allineamento coerente - Allineare i dati numerici a destra, i dati testuali a sinistra
- Larghezze appropriate - Imposta la larghezza delle colonne in base al contenuto previsto
- Formattazione - Applicare la formattazione (bordi, ombreggiatura) nel Word modello
- Totale posizionamento - Inserire i calcoli aggregati nelle righe di riepilogo appropriate
Elaborazione dei dati
- Dati puliti - Assicurarsi che i dati siano formattati correttamente prima dell'elaborazione del modello.
- Gestire i valori nulli - Fornire valori predefiniti per i campi nulli
- Limita le righe - Valutare la possibilità di utilizzare la paginazione per set di dati molto grandi.
- Ordina i dati - Preordina i dati o usa OrderBy nei modelli
Strutture di tabelle complesse
Raggruppamento multilivello
Modello:
Category | Product | Price
<<foreach [cat in categories]>>
<<[cat.name]>> | |
<<foreach [prod in cat.products]>>
| <<[prod.name]>> | $<<[prod.price]>>
<</foreach>>
| Category Total | $<<[cat.products.Sum(p => p.price)]>>
<</foreach>>
Tabelle con sezioni condizionali
Modello:
Item | Quantity | Price | Discount | Total
<<foreach [item in orderItems]>>
<<[item.name]>> | <<[item.qty]>> | $<<[item.price]>> | <<if [item.discount > 0]>><<[item.discount]>>%<<else>>-<</if>> | $<<[item.total]>>
<</foreach>>
Caratteristiche speciali del tavolo
Utilizzo avido dell'interruttore
IL -greedy L'interruttore controlla la modalità di distribuzione del contenuto tra le celle della tabella:
Senza avidità: Ogni proprietà può creare una nuova riga. Con -avido: L'intero blocco di contenuto rimane su un'unica riga
Esempio:
<<foreach [item in items]>>
<<[item.prop1]>>, <<[item.prop2]>>, <<[item.prop3]>>
<</foreach -greedy>>
Fusione verticale
Per le celle che devono estendersi su più righe, impostare l'unione delle celle nel Word modello prima di aggiungere i campi di unione.
Generazione della tabella di risoluzione dei problemi
Problemi comuni e soluzioni
Problema: Le righe della tabella non si ripetono correttamente
Soluzione: Assicurati che il ciclo foreach si estenda su tutte le celle della riga
Problema: Righe extra indesiderate
Soluzione: Utilizzo -greedy interruttore per contenuto a riga singola
Problema: Calcoli errati
Soluzione: Verificare la sintassi dell'espressione e i tipi di dati.
Problema: Formattazione persa dopo la generazione
Soluzione: Applica la formattazione alle celle del modello, non solo alla sintassi del campo di unione.
Problema: Tabelle vuote quando sono presenti dati
Soluzione: Verificare che i nomi delle proprietà corrispondano esattamente all'origine dati.
Esempio completo: Fattura di vendita
Modello:
Invoice Date: <<[invoiceDate]:"MMMM dd, yyyy">>
Customer: <<[customerName]:caps>>
Item No. | Description | Qty | Unit Price | Amount
<<foreach [item in lineItems]>>
<<[item.itemNo]>> | <<[item.description]>> | <<[item.quantity]>> | $<<[item.unitPrice]:"F2">> | $<<[item.quantity * item.unitPrice]:"F2">>
<</foreach>>
| | | Subtotal: | $<<[lineItems.Sum(i => i.quantity * i.unitPrice)]:"F2">>
| | | Tax (10%): | $<<[lineItems.Sum(i => i.quantity * i.unitPrice) * 0.10]:"F2">>
| | | **Total:** | **$<<[lineItems.Sum(i => i.quantity * i.unitPrice) * 1.10]:"F2">>**
:::suggerimento Progettazione del tavolo Progetta la struttura del tuo tavolo in Word Innanzitutto, impostate la formattazione, i bordi e lo stile appropriati. Quindi, per ottenere risultati ottimali, aggiungete i campi di unione e i cicli foreach alla tabella progettata.
:::