Pular para o conteúdo principal

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:

  1. Crie uma tabela em Word com o número desejado de colunas
  2. Coloque cada laço na primeira célula.
  3. Adicionar campos de mesclagem em células subsequentes da mesma linha.
  4. 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 produtoFabricadoPreço
Laptops25/07/2022160000
Teclado12/04/202210000
Palestrantes08/05/202225000

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 produtoFabricadoPreço
Laptops25/07/2022160000
Teclado12/04/202210000
Palestrantes08/05/202225000
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

  1. Linhas de cabeçalho - Crie cabeçalhos de coluna claros e descritivos.
  2. alinhamento consistente - Alinhar dados numéricos à direita, dados de texto à esquerda.
  3. Larguras adequadas - Defina a largura das colunas com base no conteúdo esperado.
  4. Formatação - Aplicar formatação (bordas, sombreamento) no Word modelo
  5. Classificação total - Insira os cálculos agregados nas linhas de resumo apropriadas.

Preparação de dados

  1. Dados limpos - Certifique-se de que os dados estejam formatados corretamente antes do processamento do modelo.
  2. Lidar com valores nulos - Fornecer valores padrão para campos nulos
  3. Limitar linhas - Considere a paginação para conjuntos de dados muito grandes.
  4. 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. :::