Tabelas em Modelos - Guia de Tabelas Dinâmicas
As tabelas são componentes fundamentais de documentos profissionais, proporcionando uma apresentação estruturada dos dados para facilitar a comparação, a consulta e a análise. PDF4meO mecanismo de geração de documentos do [nome da plataforma] cria, de forma eficiente, tabelas dinâmicas preenchidas com dados de suas fontes.
Estrutura de tabela com várias colunas
Gere tabelas com várias colunas definindo campos de mesclagem dentro das células da tabela. Cada linha se repete com base na coleta de dados.
Sintaxe básica de tabela
Crie uma estrutura de tabela em seu Word Modelo com o seguinte padrão:
Column 1: <<foreach [product in products]>><<[product.productName]>>
Column 2: <<[product.manufactured]:"yyyy.MM.dd">>
Column 3: <<[product.price]>><</foreach>>
Estrutura do modelo:
- Crie uma tabela em Word com o número desejado de colunas
- Coloque cada laço na primeira célula.
- Adicionar campos de mesclagem em células subsequentes da mesma linha.
- Feche cada laço na última célula.
Exemplo: Tabela de Inventário de Produtos
Fonte de dados (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"
}
]
}
Resultado gerado:
| Nome do produto | Fabricado | Preço |
|---|---|---|
| Laptops | 25/07/2022 | 160000 |
| Teclado | 12/04/2022 | 10000 |
| Palestrantes | 08/05/2022 | 25000 |
Cálculos e totais da tabela
Calcule valores agregados, como somas, médias e contagens, dentro das estruturas de suas tabelas usando métodos de enumeração.
Cálculo da Soma
Adicione uma linha de total para calcular a soma das colunas 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)]>>
Resultado gerado:
| Nome do produto | Fabricado | Preço |
|---|---|---|
| Laptops | 25/07/2022 | 160000 |
| Teclado | 12/04/2022 | 10000 |
| Palestrantes | 08/05/2022 | 25000 |
| Total | $ 195.000 |
Outras funções agregadas
Média:
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)]>>
Tabelas de coluna única
Gere tabelas com uma única coluna contendo várias linhas de informação por linha. Use o -greedy alterne para garantir que cada item da coleção ocupe uma linha.
Sintaxe de modelo de coluna única
<<foreach [product in products]>>Product: <<[product.productName]>>, Manufactured On: <<[product.manufactured]:"yyyy.MM.dd">>, Product Price: $<<[product.price]>><</foreach -greedy>>
Ponto-chave: O -greedy O switch trata todo o bloco de conteúdo como uma única linha, evitando quebras de linha indesejadas.
Resultado gerado:
| Detalhes do produto |
|---|
| Produto: Laptops, Fabricado em: 25/07/2022, Preço do produto: US$ 160.000 |
| Produto: Teclado, Fabricado em: 12/04/2022, Preço do produto: US$ 10.000 |
| Produto: Caixas de som, Fabricado em: 08/05/2022, Preço do produto: US$ 25.000 |
Exemplos de tabelas avançadas
Exemplo 1: Tabela de Itens da Fatura
Modelo:
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">>
Exemplo 2: Tabela de Diretório de Funcionários
Modelo:
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()]>>
Exemplo 3: Tabela de Relatório de Vendas
Modelo:
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">>
Linhas da tabela condicional
Gere linhas de tabela condicionalmente com base em propriedades de dados ou lógica de negócios.
Linhas filtradas
Modelo:
Product | Stock Status
<<foreach [product in products.Where(p => p.inStock == true)]>>
<<[product.name]>> | Available
<</foreach>>
Formatação condicional
Modelo:
Employee | Status
<<foreach [emp in employees]>>
<<[emp.name]>> | <<if [emp.active]>>Active<<else>>Inactive<</if>>
<</foreach>>
Melhores práticas de formatação de tabelas
Diretrizes de projeto
- Linhas de cabeçalho - Crie cabeçalhos de coluna claros e descritivos.
- alinhamento consistente - Alinhar dados numéricos à direita, dados de texto à esquerda.
- Larguras adequadas - Defina a largura das colunas com base no conteúdo esperado.
- Formatação - Aplicar formatação (bordas, sombreamento) no Word modelo
- Classificação total - Insira os cálculos agregados nas linhas de resumo apropriadas.
Preparação de dados
- Dados limpos - Certifique-se de que os dados estejam formatados corretamente antes do processamento do modelo.
- Lidar com valores nulos - Fornecer valores padrão para campos nulos
- Limitar linhas - Considere a paginação para conjuntos de dados muito grandes.
- Classificar dados - Pré-classifique os dados ou use OrderBy nos modelos.
Estruturas de tabelas complexas
Agrupamento Multinível
Modelo:
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>>
Tabelas com Seções Condicionais
Modelo:
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 especiais da mesa
Uso excessivo de switches
O -greedy O botão controla como o conteúdo é distribuído entre as células da tabela:
Sem -greedy: Cada propriedade pode criar uma nova linha. Com -greedy: Todo o bloco de conteúdo permanece em uma única linha.
Exemplo:
<<foreach [item in items]>>
<<[item.prop1]>>, <<[item.prop2]>>, <<[item.prop3]>>
<</foreach -greedy>>
Fusão vertical
Para células que devem abranger várias linhas, configure a mesclagem de células em Word modelo antes de adicionar campos de mesclagem.
Geração de tabela de solução de problemas
Problemas comuns e soluções
Emitir: As linhas da tabela não se repetem corretamente.
Solução: Certifique-se de que cada laço foreach abranja todas as células da linha.
Emitir: Linhas extras indesejadas
Solução: Usar -greedy Alternar para conteúdo de linha única
Emitir: Cálculos incorretos
Solução: Verifique a sintaxe da expressão e os tipos de dados.
Emitir: A formatação se perde após a geração.
Solução: Aplique a formatação às células do modelo, não apenas à sintaxe do campo de mesclagem.
Emitir: Tabelas vazias quando existem dados.
Solução: Verifique se os nomes das propriedades correspondem exatamente à fonte de dados.
Exemplo completo: Nota fiscal de venda
Modelo:
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">>**
:::dica Design de tabela Projete a estrutura da sua tabela em Word Primeiro, formate, defina as bordas e o estilo adequadamente. Em seguida, adicione campos de mesclagem e loops foreach à tabela criada para obter os melhores resultados. :::