Pular para o conteúdo principal

JSON para Excel

JSON para Excel cria uma pasta de trabalho .xlsx de verdade no seu navegador — não um CSV renomeado para .xls. Números continuam números, texto continua texto, a linha de cabeçalho fica congelada e com filtro, e objetos aninhados viram caminhos de coluna explícitos. Nada é enviado.

Só local
JSON
492 B30 linhasLin. 1, Col. 1
Prévia da pasta de trabalho5.7 KB
Prévia da pasta de trabalho
idcustomer.namecustomer.emailtotalcurrencytags[0]tags[1]shippednote
ord_1041Ada Lovelace[email protected]148.5GBPprioritygiftTRUE—
ord_1042Grace Hopper[email protected]92USDstandard—FALSEDeixar com o vizinho
2 linhas · 9 colunas · 1 numéricas

Como funciona o JSON para Excel?

Quase todo conversor de “JSON para Excel” na web produz um arquivo CSV com extensão .xls, e a diferença importa mais do que parece. Uma célula CSV é texto e nada mais. O Excel então adivinha: lê 00123 como o número 123 e engole os zeros à esquerda, decide que 2026-10-03 é uma data queira você ou não, e transforma 1e5 em cem mil. É o Excel querendo ajudar, e não há como impedir, porque o arquivo não carrega tipos com os quais discordar.

Uma pasta de trabalho carrega tipos. Esta ferramenta grava SpreadsheetML — as partes XML dentro de um .xlsx — então um número JSON se torna uma célula numérica, uma string JSON se torna uma célula de texto e um booleano se torna um booleano de verdade. "00123" continua 00123 porque o documento disse que era uma string.

Objetos aninhados e arrays

Uma planilha é um retângulo e JSON é uma árvore, então algo tem que ceder. A escolha aqui é uma codificação explícita de caminhos, a mesma que a ferramenta JSON para CSV usa: customer.name para um membro de objeto e tags[0] para um índice de array. As duas notações são deliberadamente diferentes, de modo que um nome de coluna nunca fica ambíguo quanto à origem.

O conjunto de colunas é a união dos campos de cada registro, na ordem em que aparecem pela primeira vez. A implementação óbvia lê as chaves do primeiro registro e perde tudo que surge depois — uma nota opcional em um pedido a cada cinquenta, um desconto que só vale às vezes. Esses campos ganham uma coluna aqui, com células vazias nos demais.

O que a pasta de trabalho contém

Uma linha de cabeçalho em negrito e congelada, para que os nomes das colunas continuem na tela enquanto você rola; um autofiltro, para estreitar qualquer coluna em um clique; e larguras de coluna medidas a partir do valor mais largo de cada coluna, em vez de ficar no padrão do Excel. O arquivo é gravado pelo mesmo escritor ZIP que a exportação de imagens em lote usa — nenhuma biblioteca de planilha é carregada, porque o formato não mudou desde 2006 e uma dependência para ele seria a maior coisa no bundle desta rota.

JSON de entrada

[
  { "id": 1, "user": { "name": "Ada" }, "tags": ["a","b"], "vip": true },
  { "id": 2, "user": { "name": "Grace" }, "tags": ["c"] }
]

Células da pasta de trabalho

A1: id      B1: user.name   C1: tags[0]   D1: tags[1]   E1: vip
A2: 1       B2: Ada         C2: a         D2: b         E2: TRUE
A3: 2       B3: Grace       C3: c         D3: (empty)   E3: (empty)

JSON de entrada → Células da pasta de trabalho

JSON de entrada

[
  { "id": 1, "user": { "name": "Ada" }, "tags": ["a", "b"], "vip": true },
  { "id": 2, "user": { "name": "Grace" }, "tags": ["c"], "note": "gift" }
]

Células da pasta de trabalho

id  user.name  tags[0]  tags[1]  vip   note
1   Ada        a        b        true
2   Grace      c                       gift

Quais opções e casos-limite o JSON para Excel suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
Formato de saída.xlsxSpreadsheetMLUma pasta de trabalho OOXML de verdade: células com tipo, cabeçalho congelado, autofiltro e larguras de coluna medidas. Um CSV renomeado para .xls não pode carregar nada disso — aí está toda a diferença.
Númerostipo de célulanuméricoUm número JSON se torna uma célula numérica, então somas e médias funcionam de imediato. Um número escrito como string JSON continua sendo string, e é isso que preserva códigos de produto, telefones e zeros à esquerda.
Arraysexplode | joinexplodeExplode gera tags[0], tags[1] e mantém cada elemento. Join condensa um array de escalares em uma única célula separada pelo seu delimitador — em geral o que quem lê a planilha quer, e com perda. Um array de objetos sempre passa por explode, porque juntá-lo destruiria a estrutura.
Objetos aninhadoscaminho de colunacustomer.nameCaminhos com ponto para membros de objeto e colchetes para índices de array, de modo que os dois se distinguem e o conjunto de colunas fica sem ambiguidade. Um conversor que cola [object Object] numa célula é justamente a falha que isso evita.
Conjunto de colunasuniãotodos os registrosTodos os campos que aparecem em qualquer registro, na ordem em que surgem pela primeira vez. Ler o cabeçalho do primeiro registro é o jeito mais comum de uma exportação descartar dados em silêncio.
Cabeçalho congeladobooleanotrueCongela a linha 1, para que os nomes das colunas continuem visíveis ao rolar por uma exportação longa. O Excel chama isso de Congelar Painéis; fica gravado na exibição da planilha em vez de ficar para o leitor configurar.
AutofiltrobooleanotrueAdiciona os menus de filtro à linha de cabeçalho. Precisa de pelo menos uma linha de dados, porque um filtro sobre apenas o cabeçalho não tem nada para filtrar.
Estrutura do nível superiorarray | objectarrayUm array de registros é a entrada esperada. Um objeto único vira uma linha. Um objeto cujo único membro array é o dado — o envelope {"data":[…]} que a maioria das APIs retorna — usa esse array e o indica.
Tamanho da entradabytes8 MBTudo roda na thread principal, então acima desse teto a pasta de trabalho é recusada em vez de tentada. Nada é enviado, independentemente do tamanho.

Perguntas frequentes

Isto é um arquivo Excel de verdade ou um CSV com outra extensão?

Uma pasta de trabalho de verdade. A saída é um .xlsx OOXML: um ZIP de partes SpreadsheetML, com células com tipo, uma linha de cabeçalho congelada e em negrito, um autofiltro e larguras de coluna medidas. Essa é a diferença que importa — um CSV renomeado para .xls não carrega tipos, então o Excel precisa adivinhar cada célula e erra em zeros à esquerda, códigos de produto e qualquer coisa que pareça uma data.

Meus zeros à esquerda vão sobreviver?

Sim, se o JSON os tinha como string. {"sku":"00123"} grava o texto 00123 e o Excel mostra 00123, porque a célula diz que é texto. {"sku":123} grava o número 123, e isso é o documento sendo fiel, e não a ferramenta perdendo algo. É a reclamação mais comum contra exportadores baseados em CSV e a razão de este gravar uma pasta de trabalho.

O que acontece com objetos aninhados e arrays?

Eles viram caminhos de coluna: {"customer":{"name":"Ada"}} produz uma coluna chamada customer.name, e tags vira tags[0], tags[1]. A forma com colchetes para arrays é deliberadamente diferente da forma com ponto para objetos, então um nome de coluna nunca fica ambíguo quanto à origem. Mude os arrays para o modo Join para tê-los em uma célula só — com perda, e vale apenas para arrays de escalares.

Alguns registros têm campos que outros não têm. Eles são descartados?

Não. O conjunto de colunas é a união dos campos de todos os registros, na ordem em que aparecem pela primeira vez, então uma nota que aparece em um pedido a cada cinquenta continua tendo sua própria coluna, com células vazias nos demais. Exportadores que leem o cabeçalho do primeiro registro perdem esses campos sem avisar.

Meus dados são enviados para algum lugar?

Não. A pasta de trabalho é montada no seu navegador e vai direto para o download. Abra o DevTools, vá ao painel Network, cole um documento e clique em Baixar — nenhuma requisição leva os dados. Isso importa mais do que parece: o JSON que as pessoas colocam em uma planilha costuma ser uma exportação real de registros reais.

Qual o tamanho máximo de documento?

8 MB de JSON, ou seja, dezenas de milhares de registros. Acima disso, a ferramenta recusa em vez de congelar a aba, porque o trabalho acontece na thread principal. A pasta de trabalho em si é pequena em relação à entrada: o arquivo contém texto XML e é gravado com entradas stored em vez de deflated, então espere um arquivo um pouco maior que o CSV equivalente.

O que mais o JSON para Excel pode fazer?