Variables en Word Plantillas
Qué abarca esta guía
PDF4me Word Las plantillas utilizan el var palabra clave para declarar variables personalizadas directamente dentro del documento. Una vez declarada, una variable puede mostrarse en cualquier lugar posterior, reasignarse en bucles para construir totales acumulados o establecerse condicionalmente para controlar mensajes dinámicos, todo ello sin tocar el JSON Carga útil de datos. Esta guía explica la sintaxis, las reglas de alcance, el formato y los patrones prácticos para cada escenario de plantilla común.
Sintaxis básica de un vistazo
Defina una variable con nombre y asígnele un valor inicial:
<<var [total = 0]>>Renderiza el valor actual en cualquier lugar después de la declaración:
<<[total]:"F2">>Actualiza el valor de la variable en cualquier momento posterior:
<<var [total = total + item.price]>>Declaración y uso básico
El var La palabra clave sigue esta estructura:
<<var [Type Name = Value]>>
Type es opcional; el motor lo deduce a partir del valor. Name es el identificador al que harás referencia más adelante. Value Puede ser cualquier literal, campo de datos o expresión.
Variable de cadena simple
<<var [companyName = "Acme Corp"]>>
<<var [companyPhone = "+1-555-0123"]>>
Company: <<[companyName]>>
Contact: <<[companyPhone]>>
For questions, please reach <<[companyName]>> at <<[companyPhone]>>.
Las variables se declaran una sola vez y se reutilizan siempre que la coherencia sea importante: si se cambia el valor en un lugar, se actualiza todo el documento.
Reasignación de variables
Reasigne una variable en cualquier punto posterior de la plantilla escribiendo otra <<var>> etiqueta con el mismo nombre. El nuevo valor entra en vigor a partir de ese momento.
<<var [status = "Pending"]>>
Current Status: <<[status]>>
<<var [status = "Approved"]>>
Updated Status: <<[status]>>
<<var [status = "Completed"]>>
Final Status: <<[status]>>
Producción:
Current Status: Pending
Updated Status: Approved
Final Status: Completed
Variables con cálculos
Las variables pueden almacenar el resultado de cualquier expresión aritmética, incluidas las agregaciones LINQ sobre colecciones de origen de datos.
Totales y cálculo de impuestos
<<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">>
concatenación de cadenas
<<var [firstName = "Jane"]>>
<<var [lastName = "Smith"]>>
<<var [fullName = firstName + " " + lastName]>>
Customer: <<[fullName]>>
Métodos de manipulación de cadenas
<<var [upperName = customerName.ToUpper()]>>
<<var [initials = firstName.Substring(0,1) + lastName.Substring(0,1)]>>
Customer: <<[upperName]>>
Initials: <<[initials]>>
Variables en bucles
Declarar variables antes el <<foreach>> etiquetarlos y reasignarlos adentro El cuerpo del bucle. El motor conserva el valor a través de las iteraciones, lo que lo convierte en el patrón estándar para totales acumulados y contadores de línea.
Total acumulado en todos los artículos
<<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">>
Contador de filas
<<var [counter = 0]>>
<<foreach [item in items]>>
<<var [counter = counter + 1]>>
<<[counter]>>. <<[item.name]>>
<</foreach>>
Total Items: <<[counter]>>
Variables condicionales
Utilice el C# operador ternario ? : Para ramificar un valor variable en función de los datos de la carga útil.
Etiqueta de estado
<<var [statusLabel = orderStatus == "Completed" ? "✓ Complete" : "⚠ Pending"]>>
<<var [urgency = daysUntilDue < 7 ? "URGENT" : "Standard"]>>
Priority: <<[urgency]>>
Status: <<[statusLabel]>>
Descuento escalonado
<<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">>
Ejemplo completo: Factura con todos los patrones
Plantilla de factura completaCombines 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]>>
Reglas de alcance de variables
| Declarado donde | Disponible |
|---|---|
| Raíz del documento (antes de cualquier bucle) | En todo el documento después de la declaración |
Dentro de un <<foreach>> bloquear | Dentro de esa iteración; persiste fuera si se declara antes del bucle. |
Dentro de un nido <<foreach>> | Dentro de ese ámbito anidado; visible fuera solo si se ha declarado previamente. |
Regla general: Declara cualquier variable que necesites fuera de un bucle. antes el <<foreach>> etiqueta. Reasignar dentro del bucle actualiza la misma variable para todas las referencias subsiguientes.
Formato de salida
Agregar .NET cadenas de formato después del nombre de la variable en la etiqueta de salida:
| Formato | Ejemplo de etiqueta | Se muestra como |
|---|---|---|
| 2 decimales | <<[total]:"F2">> | 1234.56 |
| Número entero | <<[rate * 100]:"F0">> | 15 |
| Divisa | <<[amount]:"C2">> | $1,234.56 |
| Fecha larga | <<[createdDate]:"MMMM dd, yyyy">> | January 15, 2026 |
| Fecha corta | <<[dueDate]:"MM/dd/yyyy">> | 01/15/2026 |
Mejores prácticas
- Declarar antes de usar - El motor procesa las etiquetas de arriba a abajo; una variable referenciada antes de su
<<var>>La etiqueta provoca un error. - Utilice nombres descriptivos en formato camelCase. -
grandTotal,taxAmount,invoiceDateson más fáciles de mantener quev1,tmp,x. - Inicializa los acumuladores a 0. o
""Antes de los bucles: asignar una variable no inicializada dentro del cuerpo de un bucle puede producir errores de referencia nula. - Calcula una vez, úsalo muchas veces. - Almacenar expresiones LINQ complejas en una variable en lugar de repetir la expresión en cada etiqueta de salida.
- Evite conflictos de nombres - No reutilice nombres que entren en conflicto con los nombres de los campos de la fuente de datos; el motor podría resolver la referencia de forma ambigua.