Aller au contenu principal

Variables dans Word Modèles

Ce guide couvre

PDF4me Word les modèles utilisent var mot-clé pour déclarer des variables personnalisées directement dans le document. Une fois déclarée, une variable peut être affichée n'importe où en aval, réassignée dans des boucles pour calculer des totaux cumulés, ou définie conditionnellement pour gérer la messagerie dynamique, le tout sans modifier le code source. JSON Données utiles. Ce guide explique la syntaxe, les règles de portée, la mise en forme et les modèles pratiques pour chaque scénario de modèle courant.

Syntaxe de base en bref

Déclarer

Définissez une variable nommée et attribuez-lui une valeur initiale :

<<var [total = 0]>>
Sortir

Afficher la valeur actuelle n'importe où après la déclaration :

<<[total]:"F2">>
Réaffecter

Vous pouvez modifier la valeur de la variable ultérieurement :

<<var [total = total + item.price]>>

Déclaration et utilisation de base

Le var Le mot-clé suit cette structure :

<<var [Type Name = Value]>>

Type est facultatif - le moteur le déduit de la valeur. Name est l'identifiant auquel vous ferez référence ultérieurement. Value peut être n'importe quelle valeur littérale, champ de données ou expression.

Variable de chaîne simple

<<var [companyName = "Acme Corp"]>>
<<var [companyPhone = "+1-555-0123"]>>

Company: <<[companyName]>>
Contact: <<[companyPhone]>>

For questions, please reach <<[companyName]>> at <<[companyPhone]>>.

Les variables sont déclarées une seule fois et réutilisées partout où la cohérence est importante : modifier la valeur à un seul endroit met à jour l'ensemble du document.

Réaffectation des variables

Réaffectez une variable à tout moment ultérieur dans le modèle en écrivant une autre <<var>> étiquette portant le même nom. La nouvelle valeur prend effet à partir de ce moment.

<<var [status = "Pending"]>>
Current Status: <<[status]>>

<<var [status = "Approved"]>>
Updated Status: <<[status]>>

<<var [status = "Completed"]>>
Final Status: <<[status]>>

Sortir:

Current Status: Pending
Updated Status: Approved
Final Status: Completed

Variables avec calculs

Les variables peuvent contenir le résultat de n'importe quelle expression arithmétique, y compris les agrégats LINQ sur des collections de sources de données.

Totaux et calcul des taxes

<<var [subtotal = lineItems.Sum(i => i.quantity * i.price)]>>
<<var [taxRate = 0.10]>>
<<var [taxAmount = subtotal * taxRate]>>
<<var [total = subtotal + taxAmount]>>

Subtotal: $<<[subtotal]:"F2">>
Tax (10%): $<<[taxAmount]:"F2">>
Total: $<<[total]:"F2">>

concaténation de chaînes

<<var [firstName = "Jane"]>>
<<var [lastName = "Smith"]>>
<<var [fullName = firstName + " " + lastName]>>

Customer: <<[fullName]>>

Méthodes de manipulation de chaînes de caractères

<<var [upperName = customerName.ToUpper()]>>
<<var [initials = firstName.Substring(0,1) + lastName.Substring(0,1)]>>

Customer: <<[upperName]>>
Initials: <<[initials]>>

Variables dans les boucles

Déclarer les variables avant le <<foreach>> étiqueter et réaffecter à l'intérieur le corps de la boucle. Le moteur conserve la valeur d'une itération à l'autre, ce qui en fait le modèle standard pour les totaux cumulés et les compteurs de lignes.

Total cumulé des lignes

<<var [runningTotal = 0.0]>>
<<foreach [item in lineItems]>>
<<var [lineTotal = item.quantity * item.price]>>
<<var [runningTotal = runningTotal + lineTotal]>>
<<[item.description]>> - <<[item.quantity]>> × $<<[item.price]:"F2">> = $<<[lineTotal]:"F2">> (Running: $<<[runningTotal]:"F2">>)
<</foreach>>

Final Total: $<<[runningTotal]:"F2">>

Compteur de lignes

<<var [counter = 0]>>
<<foreach [item in items]>>
<<var [counter = counter + 1]>>
<<[counter]>>. <<[item.name]>>
<</foreach>>

Total Items: <<[counter]>>

Variables conditionnelles

Utilisez le C# opérateur ternaire ? : pour faire varier la valeur d'une variable en fonction des données de la charge utile.

Étiquette d'état

<<var [statusLabel = orderStatus == "Completed" ? "✓ Complete" : "⚠ Pending"]>>
<<var [urgency = daysUntilDue < 7 ? "URGENT" : "Standard"]>>

Priority: <<[urgency]>>
Status: <<[statusLabel]>>

Réduction progressive

<<var [subtotal = items.Sum(i => i.price)]>>
<<var [discountRate = subtotal > 1000 ? 0.15 : 0.05]>>
<<var [discountAmount = subtotal * discountRate]>>
<<var [total = subtotal - discountAmount]>>

Subtotal: $<<[subtotal]:"F2">>
Discount (<<[discountRate * 100]:"F0">>%):: $<<[discountAmount]:"F2">>
Total: $<<[total]:"F2">>

Exemple complet : Facture avec tous les modèles

Modèle de facture completCombines declaration, running totals in a loop, conditional discount, and formatted output.
<<var [companyName = "Tech Solutions Inc."]>>
<<var [proposalDate = DateTime.Now]>>
<<var [validUntil = proposalDate.AddDays(30)]>>

Invoice Date: <<[proposalDate]:"MMMM dd, yyyy">>
Valid Until: <<[validUntil]:"MMMM dd, yyyy">>

Line Items:
<<var [subtotal = 0.0]>>
<<foreach [item in lineItems]>>
<<var [lineTotal = item.quantity * item.unitPrice]>>
<<var [subtotal = subtotal + lineTotal]>>
• <<[item.description]>> - <<[item.quantity]>> @ $<<[item.unitPrice]:"F2">> = $<<[lineTotal]:"F2">>
<</foreach>>

<<var [discountRate = subtotal > 5000 ? 0.10 : 0.05]>>
<<var [discountAmount = subtotal * discountRate]>>
<<var [afterDiscount = subtotal - discountAmount]>>
<<var [tax = afterDiscount * 0.08]>>
<<var [grandTotal = afterDiscount + tax]>>

Subtotal: $<<[subtotal]:"F2">>
Discount (<<[discountRate * 100]:"F0">>%):: $<<[discountAmount]:"F2">>
After Discount: $<<[afterDiscount]:"F2">>
Tax (8%): $<<[tax]:"F2">>
Grand Total: $<<[grandTotal]:"F2">>

Prepared by: <<[companyName]>>

Règles de portée variable

Déclaré oùDisponible
Racine du document (avant toute boucle)Partout dans le document après la déclaration
À l'intérieur d'un <<foreach>> blocAu sein de cette itération ; persiste en dehors si déclaré avant la boucle
À l'intérieur d'un nid <<foreach>>Dans cette portée imbriquée ; visible à l'extérieur uniquement si pré-déclaré

Règle générale : Déclarez toutes les variables nécessaires en dehors d'une boucle. avant le <<foreach>> balise. La réaffectation à l'intérieur de la boucle met à jour la même variable pour toutes les références suivantes.

Formatage de la sortie

Ajouter .NET chaînes de format après le nom de la variable dans la balise de sortie :

FormatExemple de baliseRendu comme
2 décimales<<[total]:"F2">>1234.56
Nombre entier<<[rate * 100]:"F0">>15
Devise<<[amount]:"C2">>$1,234.56
Long date<<[createdDate]:"MMMM dd, yyyy">>January 15, 2026
Date courte<<[dueDate]:"MM/dd/yyyy">>01/15/2026

Meilleures pratiques

  1. Déclarer avant utilisation Le moteur traite les balises de haut en bas ; une variable référencée avant son <<var>> L'étiquette provoque une erreur.
  2. Utilisez des noms descriptifs en camelCase. - grandTotal, taxAmount, invoiceDate sont plus faciles à entretenir que v1, tmp, x.
  3. Initialiser les accumulateurs à 0 ou "" Avant les boucles : l’affectation d’une variable non initialisée dans le corps d’une boucle peut produire des erreurs de référence nulle.
  4. Calculez une fois, utilisez plusieurs fois - Stockez les expressions LINQ complexes dans une variable plutôt que de répéter l'expression dans chaque balise de sortie.
  5. Éviter les conflits de noms - Ne réutilisez pas des noms qui entrent en conflit avec les noms de champs de la source de données ; le moteur pourrait résoudre la référence de manière ambiguë.

Foire aux questions

What is the var keyword in PDF4me templates?+
The var keyword declares a named variable inside a Word template using the syntax <<var [name = value]>>. Once declared, the variable can be output with <<[name]>> and reassigned at any later point. Variables can hold strings, numbers, dates, booleans, or the result of any expression supported by the Aspose.Words LINQ Reporting Engine, including LINQ aggregates over data-source collections.
Can I use variables inside foreach loops?+
Yes. Variables declared outside a foreach block are accessible inside it and can be reassigned on each iteration. This is the standard pattern for running totals: declare <<var [total = 0]>> before the loop, then add <<var [total = total + item.amount]>> inside the loop body. After the closing <</foreach>> tag, <<[total]>> holds the accumulated sum across all iterations.
Are variables available throughout the entire document?+
A variable is available from the point of its declaration to the end of the document. Variables declared at the document root level are accessible everywhere below, including inside nested loops and conditionals. Variables first declared inside a foreach block persist after the loop closes but may not be accessible before the loop's first iteration - always declare and initialize shared variables at the root level.
Can I perform math and string operations in a variable assignment?+
Yes. The expression inside <<var [name = expression]>> supports any standard C# expression: arithmetic operators (+, -, *, /), string concatenation (+), instance method calls (.ToUpper(), .Substring(), .ToString()), LINQ extension methods (.Sum(), .Count(), .Average(), .Max()), and ternary conditionals (?:). You can also reference other previously declared variables in the expression.
How do I format a numeric variable in the output?+
Append a .NET format string to the output tag: <<[total]:"F2">> renders two decimal places, <<[rate * 100]:"F0">> shows a whole-number percentage, <<[amount]:"C2">> formats as currency, and <<[date]:"MMMM dd, yyyy">> produces a long date. Any standard .NET composite format string is valid - the full list is available in the Microsoft .NET documentation for standard numeric and date format strings.

Guides associés

Obtenez de l'aide