Zum Hauptinhalt springen

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:

  1. Erstellen Sie eine Tabelle in Word mit der gewünschten Anzahl von Spalten
  2. Platziere die foreach-Schleife in der ersten Zelle.
  3. Fügen Sie Seriendruckfelder in aufeinanderfolgenden Zellen derselben Zeile ein.
  4. 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:

ProduktnameHergestelltPreis
Laptops25.07.2022160000
Tastatur12.04.202210000
Sprecher08.05.202225000

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:

ProduktnameHergestelltPreis
Laptops25.07.2022160000
Tastatur12.04.202210000
Sprecher08.05.202225000
Gesamt195.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

  1. Kopfzeilen - Erstellen Sie klare, aussagekräftige Spaltenüberschriften
  2. Konsequente Ausrichtung - Numerische Daten rechtsbündig, Textdaten linksbündig ausrichten
  3. Geeignete Breiten - Spaltenbreiten basierend auf dem erwarteten Inhalt festlegen
  4. Formatierung - Formatierung (Rahmen, Schattierung) anwenden in der Word Vorlage
  5. Gesamtplatzierung - Aggregatberechnungen in die entsprechenden Zusammenfassungszeilen einfügen

Datenaufbereitung

  1. Saubere Daten - Stellen Sie sicher, dass die Daten vor der Vorlagenverarbeitung korrekt formatiert sind.
  2. Nullwerte behandeln - Standardwerte für Nullfelder bereitstellen
  3. Zeilenanzahl begrenzen - Bei sehr großen Datensätzen sollte eine Paginierung in Betracht gezogen werden.
  4. 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.

:::