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:
- Crear una tabla en Word con el número de columnas deseado
- Coloca el bucle foreach en la primera celda.
- Agregue campos de combinación en celdas subsiguientes de la misma fila.
- 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 producto | Fabricado | Precio |
|---|---|---|
| portátiles | 25/07/2022 | 160000 |
| Teclado | 12/04/2022 | 10000 |
| Oradores | 8 de mayo de 2022 | 25000 |
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 producto | Fabricado | Precio |
|---|---|---|
| portátiles | 25/07/2022 | 160000 |
| Teclado | 12/04/2022 | 10000 |
| Oradores | 8 de mayo de 2022 | 25000 |
| 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
- Filas de encabezado - Crea encabezados de columna claros y descriptivos.
- Alineación consistente - Alinear datos numéricos a la derecha, datos de texto a la izquierda
- Anchos apropiados - Establecer el ancho de las columnas en función del contenido previsto.
- Formato - Aplicar formato (bordes, sombreado) en el Word plantilla
- Clasificación total - Coloque los cálculos agregados en las filas de resumen correspondientes.
Preparación de datos
- Datos limpios - Asegúrese de que los datos tengan el formato correcto antes de procesar la plantilla.
- Manejar valores nulos - Proporcionar valores predeterminados para los campos nulos.
- Limitar filas - Considere la paginación para conjuntos de datos muy grandes.
- 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.
:::