Aller au contenu principal

Tableaux dans les modèles - Guide des tableaux dynamiques

Les tableaux sont des éléments fondamentaux des documents professionnels, offrant une présentation structurée des données pour faciliter la comparaison, la consultation et l'analyse. PDF4meLe moteur de génération de documents de crée efficacement des tableaux dynamiques alimentés par les données de vos sources.


Structure de tableau à plusieurs colonnes

Générez des tableaux à plusieurs colonnes en définissant des champs de fusion dans les cellules. Chaque ligne se répète en fonction des données collectées.

Syntaxe de base des tableaux

Créez une structure de tableau dans votre Word modèle avec le schéma suivant :

Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>

Structure du modèle :

  1. Créez un tableau dans Word avec le nombre de colonnes souhaité
  2. Placez la boucle foreach dans la première cellule
  3. Ajoutez des champs de fusion dans les cellules suivantes de la même ligne.
  4. Fermez la boucle foreach dans la dernière cellule

Exemple : Tableau d'inventaire des produits

Source de données (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"
}
]
}

Résultat généré :

Nom du produitFabriquéPrix
ordinateurs portables25/07/2022160 000
Clavier12 avril 202210000
Intervenants08/05/202225000

Tableau des calculs et des totaux

Calculez les valeurs agrégées telles que les sommes, les moyennes et les dénombrements au sein de vos structures de tableau à l'aide de méthodes d'énumération.

Calcul de la somme

Ajoutez une ligne de total pour calculer la somme des colonnes numériques :

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)]>>

Résultat généré :

Nom du produitFabriquéPrix
ordinateurs portables25/07/2022160 000
Clavier12 avril 202210000
Intervenants08/05/202225000
Total195 000 $

Autres fonctions agrégées

Moyenne:

Average Price: $<<[products.Average(p => p.price)]:"F2">>

Compter:

Total Products: <<[products.Count()]>>

Maximum:

Highest Price: $<<[products.Max(p => p.price)]>>

Minimum:

Lowest Price: $<<[products.Min(p => p.price)]>>

Tableaux à une seule colonne

Générez des tableaux avec une seule colonne contenant plusieurs lignes d'information par ligne. Utilisez le -greedy Inverser pour que chaque élément de la collection occupe une ligne.

Syntaxe de modèle à une seule colonne

<<foreach [product in products]>>Product: <<[product.productName]>>, Manufactured On: <<[product.manufactured]:"yyyy.MM.dd">>, Product Price: $<<[product.price]>><</foreach -greedy>>

Point clé : Le -greedy La fonction switch traite l'ensemble du bloc de contenu comme une seule ligne, évitant ainsi les sauts de ligne indésirables.

Résultat généré :

Détails du produit
Produit : Ordinateurs portables, Date de fabrication : 25/07/2022, Prix du produit : 160 000 $
Produit : Clavier, Date de fabrication : 12/04/2022, Prix du produit : 10 000 $
Produit : Haut-parleurs, Date de fabrication : 08/05/2022, Prix du produit : 25 000 $

Exemples de tableaux avancés

Exemple 1 : Tableau des lignes de facture

Modèle:

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">>

Exemple 2 : Tableau de l’annuaire des employés

Modèle:

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()]>>

Exemple 3 : Tableau de rapport des ventes

Modèle:

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">>

Lignes de tableau conditionnelles

Générer des lignes de tableau de manière conditionnelle en fonction des propriétés des données ou de la logique métier.

Lignes filtrées

Modèle:

Product | Stock Status
<<foreach [product in products.Where(p => p.inStock == true)]>>
<<[product.name]>> | Available
<</foreach>>

Mise en forme conditionnelle

Modèle:

Employee | Status
<<foreach [emp in employees]>>
<<[emp.name]>> | <<if [emp.active]>>Active<<else>>Inactive<</if>>
<</foreach>>

Bonnes pratiques de mise en forme des tableaux

Directives de conception

  1. Lignes d'en-tête - Créez des en-têtes de colonnes clairs et descriptifs
  2. Alignement cohérent - Aligner les données numériques à droite, les données textuelles à gauche
  3. Largeurs appropriées - Définir la largeur des colonnes en fonction du contenu attendu
  4. Mise en forme - Appliquer une mise en forme (bordures, ombrage) dans le Word modèle
  5. Placement total - Placez les calculs agrégés dans les lignes de synthèse appropriées.

Préparation des données

  1. Données propres - Assurez-vous que les données sont correctement formatées avant le traitement du modèle
  2. Gérer les valeurs nulles - Fournir des valeurs par défaut pour les champs nuls
  3. Limiter les lignes - Envisagez la pagination pour les très grands ensembles de données.
  4. Données de tri - Triez les données au préalable ou utilisez OrderBy dans les modèles

Structures de tableaux complexes

Groupement à plusieurs niveaux

Modèle:

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>>

Tableaux avec sections conditionnelles

Modèle:

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>>

Caractéristiques spéciales de la table

Utilisation gourmande de Switch

Le -greedy Ce commutateur contrôle la répartition du contenu dans les cellules du tableau :

Sans -avide : Chaque propriété peut créer une nouvelle ligne. Avec -greedy : L'ensemble du bloc de contenu reste sur une seule ligne

Exemple:

<<foreach [item in items]>>
<<[item.prop1]>>, <<[item.prop2]>>, <<[item.prop3]>>
<</foreach -greedy>>

Fusion verticale

Pour les cellules qui doivent s'étendre sur plusieurs lignes, configurez la fusion des cellules dans le Word modèle avant l'ajout de champs de fusion.


Génération de tableaux de dépannage

Problèmes courants et solutions

Problème: Les lignes du tableau ne se répètent pas correctement
Solution: Assurez-vous que la boucle foreach parcourt toutes les cellules de la ligne.

Problème: Lignes supplémentaires indésirables
Solution: Utiliser -greedy commutateur pour contenu à une seule ligne

Problème: Calculs incorrects
Solution: Vérifiez la syntaxe des expressions et les types de données.

Problème: Formatage perdu après la génération
Solution: Appliquez la mise en forme aux cellules du modèle, et pas seulement à la syntaxe des champs de fusion.

Problème: Tables vides alors que des données existent
Solution: Vérifiez que les noms des propriétés correspondent exactement à la source de données.


Exemple complet : Facture de vente

Modèle:

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">>**

:::Conception de table

Concevez la structure de votre table dans Word Commencez par appliquer une mise en forme appropriée (bordures, style, etc.). Ajoutez ensuite des champs de fusion et des boucles foreach au tableau conçu pour un résultat optimal.

:::