Saltar al contenido principal

Tablas en plantillas - Guía de tablas dinámicas

Las tablas son componentes fundamentales de los documentos profesionales, ya que proporcionan una presentación estructurada de los datos para facilitar su comparación, consulta y análisis. PDF4meEl motor de generación de documentos crea de forma eficiente tablas dinámicas que se rellenan con datos de sus fuentes.


Estructura de tabla de varias columnas

Genere tablas con varias columnas definiendo campos de combinación dentro de las celdas de la tabla. Cada fila se repite según la colección de datos.

Sintaxis básica de tablas

Crea una estructura de tabla en tu Word Plantilla con el siguiente patrón:

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

Estructura de la plantilla:

  1. Crear una tabla en Word con el número de columnas deseado
  2. Coloca el bucle foreach en la primera celda.
  3. Agregue campos de combinación en celdas subsiguientes de la misma fila.
  4. Cierra el bucle foreach en la última celda.

Ejemplo: Tabla de inventario de productos

Fuente de datos (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"
}
]
}

Salida generada:

Nombre del productoFabricadoPrecio
portátiles25/07/2022160000
Teclado12/04/202210000
Oradores8 de mayo de 202225000

Cálculos y totales de la tabla

Calcula valores agregados como sumas, promedios y recuentos dentro de las estructuras de tus tablas utilizando métodos de enumeración.

Cálculo de suma

Agregue una fila de totales para calcular la suma de las columnas numéricas:

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

Salida generada:

Nombre del productoFabricadoPrecio
portátiles25/07/2022160000
Teclado12/04/202210000
Oradores8 de mayo de 202225000
Total$195000

Otras funciones de agregación

Promedio:

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

Contar:

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

Máximo:

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

Mínimo:

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

Tablas de una sola columna

Generar tablas con una sola columna que contenga varias líneas de información por fila. Utilice el -greedy Cambie el interruptor para asegurar que cada elemento de la colección ocupe una fila.

Sintaxis de plantilla de una sola columna

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

Punto clave: El -greedy La función switch trata todo el bloque de contenido como una sola fila, evitando así saltos de fila no deseados.

Salida generada:

Detalles del producto
Producto: Portátiles, Fecha de fabricación: 25/07/2022, Precio del producto: 160 000 $
Producto: Teclado, Fecha de fabricación: 12/04/2022, Precio del producto: 10000 $
Producto: Altavoces, Fecha de fabricación: 08/05/2022, Precio del producto: 25000 $

Ejemplos de tablas avanzadas

Ejemplo 1: Tabla de partidas de factura

Plantilla:

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

Ejemplo 2: Tabla de directorio de empleados

Plantilla:

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

Ejemplo 3: Tabla de informe de ventas

Plantilla:

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

Filas de tabla condicionales

Generar filas de tabla de forma condicional en función de las propiedades de los datos o la lógica empresarial.

Filas filtradas

Plantilla:

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

Formato condicional

Plantilla:

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

Buenas prácticas para el formato de tablas

Directrices de diseño

  1. Filas de encabezado - Crea encabezados de columna claros y descriptivos.
  2. Alineación consistente - Alinear datos numéricos a la derecha, datos de texto a la izquierda
  3. Anchos apropiados - Establecer el ancho de las columnas en función del contenido previsto.
  4. Formato - Aplicar formato (bordes, sombreado) en el Word plantilla
  5. Clasificación total - Coloque los cálculos agregados en las filas de resumen correspondientes.

Preparación de datos

  1. Datos limpios - Asegúrese de que los datos tengan el formato correcto antes de procesar la plantilla.
  2. Manejar valores nulos - Proporcionar valores predeterminados para los campos nulos.
  3. Limitar filas - Considere la paginación para conjuntos de datos muy grandes.
  4. Ordenar datos - Preordenar los datos o usar OrderBy en las plantillas.

Estructuras de tablas complejas

Agrupación multinivel

Plantilla:

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

Tablas con secciones condicionales

Plantilla:

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

Características especiales de la mesa

Uso codicioso del interruptor

El -greedy Este interruptor controla cómo se distribuye el contenido entre las celdas de la tabla:

Sin -codicioso: Cada propiedad puede crear una nueva fila. Con -codicioso: Todo el bloque de contenido permanece en una sola fila.

Ejemplo:

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

Fusión vertical

Para las celdas que deben abarcar varias filas, configure la combinación de celdas en el Word Plantilla antes de agregar campos de combinación.


Solución de problemas Generación de tablas

Problemas comunes y soluciones

Asunto: Las filas de la tabla no se repiten correctamente.
Solución: Asegúrese de que el bucle foreach abarque todas las celdas de la fila.

Asunto: Filas adicionales no deseadas
Solución: Usar -greedy interruptor para contenido de una sola fila

Asunto: Cálculos incorrectos
Solución: Verificar la sintaxis de las expresiones y los tipos de datos.

Asunto: El formato se pierde después de la generación.
Solución: Aplicar formato a las celdas de la plantilla, no solo combinar la sintaxis de los campos.

Asunto: Tablas vacías cuando existen datos
Solución: Verifique que los nombres de las propiedades coincidan exactamente con la fuente de datos.


Ejemplo completo: Factura de venta

Plantilla:

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

:::Consejo Diseño de mesas Diseña la estructura de tu mesa en Word Primero, con el formato, los bordes y el estilo adecuados. Luego, agregue campos de combinación y bucles foreach a la tabla diseñada para obtener mejores resultados.

:::