Tabellen in Vorlagen – Leitfaden für dynamische Tabellen
Tabellen sind grundlegende Bestandteile professioneller Dokumente und ermöglichen eine strukturierte Darstellung von Daten zum einfachen Vergleich, zur Bezugnahme und zur Analyse. PDF4meDie Dokumentengenerierungs-Engine von erstellt effizient dynamische Tabellen, die mit Daten aus Ihren Quellen gefüllt werden.
Mehrspaltige Tabellenstruktur
Erstellen Sie Tabellen mit mehreren Spalten, indem Sie Seriendruckfelder innerhalb der Tabellenzellen definieren. Jede Zeile wird basierend auf der Datenerfassung wiederholt.
Grundlegende Tabellensyntax
Erstellen Sie eine Tabellenstruktur in Ihrem Word Vorlage mit folgendem Muster:
Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>
Vorlagenstruktur:
- Erstellen Sie eine Tabelle in Word mit der gewünschten Anzahl von Spalten
- Platziere die foreach-Schleife in der ersten Zelle.
- Fügen Sie Seriendruckfelder in aufeinanderfolgenden Zellen derselben Zeile ein.
- Schließe die foreach-Schleife in der letzten Zelle
Beispiel: Produktinventartabelle
Datenquelle (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"
}
]
}
Generierte Ausgabe:
| Produktname | Hergestellt | Preis |
|---|---|---|
| Laptops | 25.07.2022 | 160000 |
| Tastatur | 12.04.2022 | 10000 |
| Sprecher | 08.05.2022 | 25000 |
Tabellenberechnungen und Summen
Berechnen Sie aggregierte Werte wie Summen, Mittelwerte und Anzahlen innerhalb Ihrer Tabellenstrukturen mithilfe von Aufzählungsmethoden.
Summenberechnung
Fügen Sie eine Summenzeile hinzu, um die Summe der numerischen Spalten zu berechnen:
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)]>>
Generierte Ausgabe:
| Produktname | Hergestellt | Preis |
|---|---|---|
| Laptops | 25.07.2022 | 160000 |
| Tastatur | 12.04.2022 | 10000 |
| Sprecher | 08.05.2022 | 25000 |
| Gesamt | 195.000 US-Dollar |
Andere Aggregatfunktionen
Durchschnitt:
Average Price: $<<[products.Average(p => p.price)]:"F2">>
Zählen:
Total Products: <<[products.Count()]>>
Maximal:
Highest Price: $<<[products.Max(p => p.price)]>>
Minimum:
Lowest Price: $<<[products.Min(p => p.price)]>>
Einspaltige Tabellen
Erstellen Sie Tabellen mit einer einzigen Spalte, die pro Zeile mehrere Informationszeilen enthält. Verwenden Sie die -greedy Wechseln Sie die Zeile, um sicherzustellen, dass jedes Sammlungselement eine eigene Zeile belegt.
Syntax für einspaltige Vorlagen
<<foreach [product in products]>>Product: <<[product.productName]>>, Manufactured On: <<[product.manufactured]:"yyyy.MM.dd">>, Product Price: $<<[product.price]>><</foreach -greedy>>
Wichtigster Punkt: Der -greedy Der Schalter behandelt den gesamten Inhaltsblock als eine einzige Zeile und verhindert so unerwünschte Zeilenumbrüche.
Generierte Ausgabe:
| Produktdetails |
|---|
| Produkt: Laptops, Herstellungsdatum: 25.07.2022, Produktpreis: 160.000 $ |
| Produkt: Tastatur, Herstellungsdatum: 12.04.2022, Produktpreis: 10000 $ |
| Produkt: Lautsprecher, Herstellungsdatum: 08.05.2022, Produktpreis: 25.000 $ |
Erweiterte Tabellenbeispiele
Beispiel 1: Tabelle der Rechnungspositionen
Vorlage:
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">>
Beispiel 2: Mitarbeiterverzeichnistabelle
Vorlage:
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()]>>
Beispiel 3: Tabelle im Verkaufsbericht
Vorlage:
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">>
Bedingte Tabellenzeilen
Generieren Sie Tabellenzeilen bedingt basierend auf Dateneigenschaften oder Geschäftslogik.
Gefilterte Zeilen
Vorlage:
Product | Stock Status
<<foreach [product in products.Where(p => p.inStock == true)]>>
<<[product.name]>> | Available
<</foreach>>
Bedingte Formatierung
Vorlage:
Employee | Status
<<foreach [emp in employees]>>
<<[emp.name]>> | <<if [emp.active]>>Active<<else>>Inactive<</if>>
<</foreach>>
Best Practices für die Tabellenformatierung
Gestaltungsrichtlinien
- Kopfzeilen - Erstellen Sie klare, aussagekräftige Spaltenüberschriften
- Konsequente Ausrichtung - Numerische Daten rechtsbündig, Textdaten linksbündig ausrichten
- Geeignete Breiten - Spaltenbreiten basierend auf dem erwarteten Inhalt festlegen
- Formatierung - Formatierung (Rahmen, Schattierung) anwenden in der Word Vorlage
- Gesamtplatzierung - Aggregatberechnungen in die entsprechenden Zusammenfassungszeilen einfügen
Datenaufbereitung
- Saubere Daten - Stellen Sie sicher, dass die Daten vor der Vorlagenverarbeitung korrekt formatiert sind.
- Nullwerte behandeln - Standardwerte für Nullfelder bereitstellen
- Zeilenanzahl begrenzen - Bei sehr großen Datensätzen sollte eine Paginierung in Betracht gezogen werden.
- Daten sortieren - Daten vorsortieren oder OrderBy in Vorlagen verwenden
Komplexe Tabellenstrukturen
Mehrstufige Gruppierung
Vorlage:
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>>
Tabellen mit bedingten Abschnitten
Vorlage:
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>>
Besondere Tischmerkmale
Gierige Schalternutzung
Der -greedy Der Schalter steuert, wie der Inhalt auf die Tabellenzellen verteilt wird:
Ohne -greedy: Jede Eigenschaft kann eine neue Zeile erzeugen. ... Mit -greedy: Der gesamte Inhaltsblock bleibt in einer Zeile.
Beispiel:
<<foreach [item in items]>>
<<[item.prop1]>>, <<[item.prop2]>>, <<[item.prop3]>>
<</foreach -greedy>>
Vertikale Zusammenführung
Für Zellen, die sich über mehrere Zeilen erstrecken sollen, richten Sie die Zellverschmelzung in der Word Vorlage vor dem Hinzufügen von Seriendruckfeldern.
Fehlerbehebung bei der Tabellengenerierung
Häufige Probleme und Lösungen
Ausgabe: Tabellenzeilen werden nicht korrekt wiederholt
Lösung: Stellen Sie sicher, dass die foreach-Schleife alle Zellen in der Zeile durchläuft.
Ausgabe: Unerwünschte zusätzliche Zeilen
Lösung: Verwenden -greedy Umschalten auf einzeiligen Inhalt
Ausgabe: Falsche Berechnungen
Lösung: Überprüfen Sie die Syntax der Ausdrücke und die Datentypen.
Ausgabe: Formatierung nach der Generierung verloren
Lösung: Formatierung auf Vorlagenzellen anwenden, nicht nur auf die Syntax für Seriendruckfelder.
Ausgabe: Leere Tabellen, wenn Daten vorhanden sind
Lösung: Prüfen Sie, ob die Eigenschaftsnamen exakt mit der Datenquelle übereinstimmen.
Vollständiges Beispiel: Verkaufsrechnung
Vorlage:
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">>**
:::Tipp Tabellengestaltung Gestalten Sie Ihre Tabellenstruktur in Word Zuerst formatieren Sie die Tabelle entsprechend und fügen Rahmen und Stile hinzu. Anschließend ergänzen Sie die Tabelle um Seriendruckfelder und foreach-Schleifen, um optimale Ergebnisse zu erzielen.
:::