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