Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Aqui você converte XLSX para JSON de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.
Até 100 arquivos de uma vez. Formatos misturados não são problema.
Eles são convertidos um após o outro e baixados juntos em um ZIP.
XLSX para JSON
Esta conversão existe por causa de um padrão que se repete em toda organização: a versão oficial de alguma coisa — uma tabela de preço, um catálogo de produto, uma tabela de tradução, um horário de funcionamento, um mapeamento de código para nome — mora numa planilha mantida por alguém que não é programador, e precisa chegar a um programa que espera dado.
É um arranjo perfeitamente razoável. Uma planilha é uma boa interface de edição, o pessoal de negócio já sabe usar, e construir uma ferramenta administrativa pequena para substituir ela raramente vale o esforço. O que falta é uma conversão confiável na fronteira, e é esse o trabalho inteiro aqui.
O mapeamento é o óbvio. A primeira linha é tratada como cabeçalho e fornece o nome das chaves; toda linha depois dela vira um objeto; toda célula vira um valor nesse objeto. O resultado é um vetor de registros, o formato que um programa consumidor quase sempre quer.
Vale pensar no cabeçalho de propósito, porque essas células viram nome de chave no seu código. Curto, minúsculo, sem espaço e sem pontuação produz chaves agradáveis de trabalhar; um cabeçalho como «Preço unitário (R$, sem imposto)» produz algo que ninguém quer digitar duas vezes.
Uma planilha não guarda data como data. Guarda um número contando dias a partir de uma origem, e a formatação da célula é o que faz 45678 aparecer como uma data na tela. Converter devolve o que de fato está no arquivo, que é o número.
As duas formas de contornar isso são deliberadas. Formate a coluna como texto na planilha e digite data ISO nela, o que torna o arquivo autodescritivo e sobrevive a qualquer conversão. Ou transforme os valores depois da conversão, aplicando a aritmética de contagem de dias você mesmo. As duas funcionam; descobrir o problema depois que o dado chega em produção não funciona.
Um CEP, um código de produto, um código bancário ou um identificador nacional guardado numa célula formatada como número já perdeu os zeros à esquerda — o Excel fez isso quando o valor foi digitado ou importado, e o arquivo contém um número.
O mesmo vale para identificador acima de quinze dígitos, que perde os últimos dígitos para ponto flutuante dentro da própria planilha. Nenhum conversor recupera nenhum dos dois, porque a informação não está no arquivo. A correção fica a montante: essas colunas precisam ser formatadas como texto na planilha, e vale avisar quem mantém a planilha uma vez em vez de consertar a saída todo mês.
Fórmula, e você recebe o resultado dela — que é o que se quer, já que um programa não tem o que fazer com uma fórmula. Formatação, cor, regra condicional e largura de coluna, nada disso é dado. Gráfico, comentário e célula mesclada, sem equivalente nenhum.
Célula mesclada é a que vale observar. Um cabeçalho mesclado abrangendo três colunas é um recurso de apresentação, e produz um objeto com uma chave preenchida e duas vazias — um registro de aparência estranha vindo de uma planilha de aparência perfeitamente sensata. Cabeçalho plano, uma célula por coluna, é o que torna esta conversão sem graça, e sem graça é o objetivo.
O arranjo comum é manter a planilha como origem editável, converter para JSON como uma etapa, e versionar o JSON junto do código. O dado fica então revisável num pull request, versionado, e disponível no momento do build sem nenhuma dependência de tempo de execução num arquivo que alguém pode mover.
Dois hábitos fazem isso funcionar ao longo do tempo. Converta sempre do mesmo jeito, para uma diferença mostrar mudança real em vez de reordenação. E valide o resultado contra um esquema antes de versionar, para uma coluna renomeada por um colega bem-intencionado falhar uma checagem em vez de produzir objetos com um campo faltando em silêncio.
Se o destino é uma importação de banco de dados, uma ferramenta de análise ou um pipeline de dados, o CSV costuma ser o intermediário melhor: transmite em fluxo, todo sistema lê, e não impõe uma estrutura de aninhamento a um dado que não tem nenhuma.
O JSON ganha o lugar dele quando o dado vai para código de aplicação — um front-end, um arquivo de configuração, um fixture de API — onde um vetor de objetos é o que a linguagem quer e a análise é uma linha. Escolha pelo que lê o arquivo, não por qual formato é mais moderno.
A conversão roda na aba do navegador, no seu próprio processador, então nada é enviado e nenhum servidor guarda cópia. Não há conta, não há fila, não há cota diária; o limite de tamanho é 100 MB por arquivo, cem arquivos por lote.
Isso não é incidental aqui. As planilhas que as pessoas convertem são internas: preço, margem, lista de cliente, registro de funcionário, catálogo ainda não lançado. Não enviar elas a lugar nenhum é a forma mais simples de não precisar confiar isso a ninguém.
| XLSX | JSON | |
|---|---|---|
| Nome completo | Pasta de trabalho do Excel | JavaScript Object Notation |
| Extensão do arquivo | .xlsx | .json |
| Tipo de mídia | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/json |
| Publicado pela primeira vez | 2007 | 2001 |
| Publicado por | Microsoft | — |
| Especificação | ECMA-376 | RFC 8259 |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Atual |
| Abre no navegador | Nenhum navegador | Todos os navegadores |
| Considerado no lugar | CSV, ODS, Parquet | XML, YAML, NDJSON |
JSON abre em qualquer navegador atual. XLSX alcança ainda menos navegadores. Se o arquivo vai para uma página web ou um formulário, esse costuma ser todo o motivo da conversão.
Os programas de sempre não se cruzam: XLSX abre em Microsoft Excel, LibreOffice Calc e Google Sheets, e JSON em Visual Studio Code, jq e Postman, então quem receber o resultado precisa de algum do segundo grupo.
Os dois miram trabalhos diferentes: XLSX em a edição, JSON em mover dados entre programas e a web. Vale pesar isso antes, porque o motivo de um existir costuma ser o motivo de o outro ser incômodo.
XLSX é o formato da Microsoft, publicado em 2007. Está descrito em ECMA-376, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.
JSON e de 2001, descrito em RFC 8259. Visual Studio Code, jq e Postman leem o formato.
Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo. O motor deste par específico é SheetJS, um leitor e gravador de planilhas em JavaScript; seu navegador baixa isso uma vez e guarda.
É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez. SheetJS é baixado para a sua máquina e roda lá, e por isso não há contador.
XLSX e JSON descrevem o conteúdo de maneiras radicalmente diferentes. A conversão é, portanto, uma reconstrução e não uma cópia: fiel, mas não idêntica byte a byte. Só a primeira planilha é lida, e dela só os valores. Fórmulas, formatação, largura das colunas e todas as planilhas seguintes ficam de fora.
Para a conversão, não: ela acontece no navegador que você já tem aberto. Para abrir o resultado você precisa depois do programa com que o seu aparelho normalmente exibe JavaScript Object Notation.