Pular para o conteúdo

Ferramentas de planilhas que acertam os tipos de dados

Nove ferramentas para levar tabelas entre Excel, CSV, JSON, XML, PDF e OpenDocument. As três que precisam de um aplicativo de planilhas completo enviam o arquivo ao nosso servidor, que o exclui assim que o seu download fica pronto.

9 ferramentas, sem cadastro, sem marca d'água

Se um sistema pede um CSV, comece por Excel para CSV; se um CSV chega ao Excel como uma única coluna embaralhada, CSV para Excel; se os dados vão para código, CSV para JSON ou JSON para CSV. Arquivos .xls antigos e planilhas OpenDocument ficam com XLS para XLSX, ODS para XLSX e XLSX para ODS, que mantêm a formatação e os gráficos, e PDF para Excel tira de volta uma tabela de um relatório cujo arquivo original ninguém mandou para você. As notas abaixo tratam do que está por trás de quase todo problema de conversão de planilhas: a diferença entre o que uma célula armazena e o que ela mostra.

O que uma célula armazena de fato

Uma célula de planilha guarda duas coisas separadas: um valor e um formato de número. O valor 0.15 pode aparecer como 15%, como 0,15, como R$ 0,15 ou como 15,00%, e nenhuma dessas formas de exibição altera o valor em nada. Esse é o fato mais útil que existe sobre planilhas, e é por isso que Excel para CSV pede que você escolha entre “Como aparece no Excel” e “Números brutos” em vez de adivinhar. “Como aparece no Excel” grava exatamente o texto da tela — 15/03/2024, 1.234,50, 12% — que é o que o próprio Salvar como do Excel faz e o que uma pessoa lendo o CSV espera. “Números brutos” grava números simples e datas ISO, que é o que um banco de dados ou um script espera. Escolha a opção errada e a importação falha de um jeito que parece que os dados estão corrompidos.

Datas são números fingindo ser datas. Uma célula de data guarda uma contagem serial de dias, e o marco a partir do qual ela conta depende do arquivo: planilhas gravadas pelo Excel do Windows contam a partir de 1900, planilhas do antigo Excel para Mac contam a partir de 1904, e as duas ficam 1.462 dias distantes. O sistema de 1900 é ainda mais estranho — ele acredita que 29 de fevereiro de 1900 existiu, um bug herdado do Lotus 1-2-3 e mantido desde então por compatibilidade. As ferramentas daqui leem o indicador de marco de cada planilha e reproduzem o falso dia bissexto exatamente onde ele deve estar, e é por isso que uma data convertida aqui bate com o que o Excel mostra em vez de escorregar quatro anos e um dia.

Uma fórmula e o seu resultado ficam guardados lado a lado. Uma planilha mantém o texto da fórmula e o último valor que ela calculou. Conversões de planilha para planilha — ODS para XLSX, XLS para XLSX, XLSX para ODS — levam as próprias fórmulas, traduzidas entre os dois vocabulários de funções, para que a planilha continue recalculando quando você a edita; as poucas funções que só existem de um dos lados aparecem como #NOME? até você substituí-las. Tudo o que sai do mundo das planilhas — CSV, JSON, XML — leva só o resultado calculado, porque nenhum desses formatos tem qualquer noção de fórmula.

O CSV não consegue representar a maior parte de uma planilha, e fingir que consegue é onde os dados se perdem. Ele não tem abas, então cada aba vira um arquivo próprio (e um ZIP, se você quiser todas). Não tem tipos de célula, então todo campo é texto até que algo adivinhe. Não tem formatos, fórmulas, gráficos, imagens, cores nem larguras de coluna. Células mescladas precisam ser resolvidas de um jeito ou de outro — o valor na primeira célula, ou repetido por toda a mesclagem. E ele não registra o próprio delimitador, o separador decimal nem a codificação, e é por isso que um arquivo europeu com ponto e vírgula e vírgula decimal cai em uma só coluna em um Excel americano, e por que texto acentuado vira caracteres embaralhados, a menos que o arquivo comece com uma marca de ordem de bytes (BOM).

Texto que parece número é onde acontece o estrago de verdade. O Excel adivinha célula por célula quando você abre um CSV: o CEP 01234-000 perde o zero, um ID de pedido de 16 dígitos vira 1,23457E+15 e não tem mais volta, e o nome de gene SEPT2 vira uma data — um problema tão sério que a comunidade de genética renomeou seus genes. CSV para Excel decide uma vez por coluna, a partir de todos os valores dela, e só converte quando a coluna inteira concorda; qualquer coisa com zeros à esquerda, e qualquer inteiro longo demais para um número JavaScript guardar com exatidão, continua como texto. JSON para CSV aplica o mesmo cuidado no sentido inverso, copiando IDs de 64 bits dígito por dígito, enquanto a maioria dos conversores os arredonda.

JSON e XML perdem, cada um, algo próprio. O JSON não tem nenhum tipo de data, então as datas viajam como texto e o código que as recebe precisa saber o que está lendo. O XML de dados leva só valores, sem formatação, gráficos nem imagens — exatamente o que um feed de importação quer, e não o que você quer se a ideia era manter a planilha intacta.

Onde o navegador é mesmo a ferramenta errada

Sete destas ferramentas nunca enviam seu arquivo para lugar nenhum: Excel para CSV, CSV para Excel, CSV para JSON, JSON para CSV, XML para Excel, Excel para XML e PDF para Excel. Nada fica armazenado, o que faz diferença quando o arquivo é uma folha de pagamento ou uma lista de clientes. Quatro são diferentes — Excel para PDF, ODS para XLSX, XLS para XLSX e XLSX para ODS entregam o arquivo ao nosso servidor, porque diagramar uma página impressa, ou levar fontes, cores, formatação condicional e gráficos de um formato para outro, não é algo que uma página web consiga simular. Esses arquivos viajam por uma conexão criptografada, são convertidos e excluídos assim que o seu download fica pronto. Se o servidor estiver fora do ar, cada uma recorre ao próprio conversor, que mantém valores, fórmulas, formatos de número, células mescladas e larguras de coluna, mas não fontes, cores nem gráficos — e avisa você quando fez isso.

Tamanho. As ferramentas que funcionam no navegador guardam a tabela inteira na memória, então o teto é a memória disponível para a sua aba — tranquilo até dezenas de megabytes, complicado acima de cem e inviável para uma extração de vários gigabytes. Os conversores de planilhas aceitam até 50 MB por arquivo e o Excel para PDF até 40 MB, e ambos avisam antes de converter, não depois. Uma aba do Excel em si para em 1.048.576 linhas, um limite do formato, não nosso; CSV para Excel continua em abas extras com o cabeçalho repetido, em vez de cortar seus dados em silêncio.

Trabalho de dados de verdade. Um conversor não é um banco de dados. Cruzar duas tabelas, remover duplicatas, agregar, filtrar dez milhões de linhas ou analisar uma exportação bagunçada são tarefas para ferramentas feitas para isso, e as gratuitas são muito boas: csvkit para cirurgias rápidas em CSV na linha de comando, Miller para o mesmo em JSON e CSV juntos, qsv para velocidade em arquivos enormes, DuckDB para rodar SQL de verdade direto sobre um arquivo CSV ou Parquet, pandas se você já estiver no Python.

Macros, e qualquer coisa que execute. VBA não pode ser levado para .xlsx, que simplesmente não tem onde guardá-lo, e também não é levado para .ods, porque o LibreOffice executa só parte do VBA e as diferenças apareceriam como números errados, não como erros. Se uma planilha depende das macros, guarde o original junto da cópia convertida. Arquivos protegidos por senha precisam ter a senha removida antes, no programa que a definiu.

Automação. Estas ferramentas funcionam quando uma pessoa clica. Converter um feed toda noite é trabalho para a linha de comando: o LibreOffice em modo headless faz todos os formatos desta página.

Como escolher entre ferramentas de nome parecido

Excel para CSV ou Excel para XML. As duas leem uma planilha e gravam um arquivo de dados simples, e quem decide é o destino. CSV vai para planilhas, bancos de dados e qualquer coisa que diga “envie um CSV”. XML vai para importações e integrações que especificam nomes de elementos — você define os nomes da raiz e das linhas, os cabeçalhos viram nomes de elementos e os valores saem como números simples e datas ISO. Excel para XML também pode gravar XML Spreadsheet 2003, que é algo completamente diferente: um formato que o Excel reabre como planilha, para quando um sistema pede “Excel XML” em vez do seu próprio XML de dados.

CSV para Excel ou CSV para JSON. Mesmo leitor, mesma detecção de tipos por coluna, saída diferente. CSV para Excel gera um .xlsx com datas e números de verdade, que você pode somar e ordenar, e uma linha de cabeçalho congelada e com filtro — para pessoas. CSV para JSON gera um array de objetos, um array de arrays, um objeto com chaves ou JSON Lines — para código. Se a resposta for “os dois”, converta para Excel para as pessoas e para JSON para o pipeline; eles vão concordar, porque os tipos das colunas foram decididos do mesmo jeito.

XML para Excel ou Excel para XML. Não são simplesmente sentidos opostos. XML para Excel precisa primeiro encontrar a tabela: procura elementos que se repetem sob o mesmo pai — cada <book> de um catálogo, cada <item> de um feed RSS —, dá uma nota a cada grupo e deixa os outros a um clique, depois achata atributos e elementos aninhados em colunas nomeadas pelo caminho. Excel para XML não tem nada a procurar, porque as suas linhas já são os registros.

XLS para XLSX ou CSV para Excel. As duas terminam em uma planilha moderna. XLS para XLSX atualiza um arquivo binário real do Excel 97–2003 e mantém tudo o que há nele — abas, fórmulas, formatação, gráficos. CSV para Excel monta uma planilha a partir de texto simples que nunca teve nada disso. A sobreposição é o caso intermediário chato: muitos aplicativos web exportam uma tabela HTML ou um arquivo XML e o chamam de .xls. XLS para XLSX reconhece esses arquivos pelo que realmente são e salva uma planilha de verdade.

PDF para Excel ou Excel para PDF. Sentidos opostos, e só um deles é confiável. Excel para PDF é um trabalho de diagramação: a planilha já conhece sua área de impressão, suas quebras de página e sua formatação, e o conversor as desenha. PDF para Excel é o sentido difícil, porque um PDF registra onde cada caractere foi pintado e nada sobre a qual célula ele pertencia — as colunas são deduzidas pela posição. Funciona bem em tabelas limpas e com linhas de grade, precisa de ajustes onde há células mescladas ou texto quebrado em várias linhas, recria valores, mas não formatação nem fórmulas, e dá a cada página do PDF uma aba própria. Se a planilha original ainda existe, peça por ela.

ODS para XLSX ou Excel para CSV, para um arquivo .ods. Excel para CSV abre .ods sem problema e entrega os valores. ODS para XLSX mantém a planilha como planilha, com fórmulas, formatação e gráficos. Use o conversor quando alguém precisa trabalhar no arquivo, e o caminho do CSV quando um sistema precisa dos números que estão nele.

A base destas ferramentas

Os motores de código aberto que fazem o trabalho de fato e as especificações que eles implementam.

  • SheetJSApache-2.0 — lê e grava todos os formatos de planilha daqui.
  • LibreOffice CalcMPL-2.0 — faz as conversões que o navegador não consegue, quando está disponível.
  • RFC 4180Specification — é o mais perto que o CSV tem de um padrão, e explica por que os arquivos divergem.

Perguntas frequentes

Minhas planilhas ficam armazenadas em algum lugar?

Não em Excel para CSV, CSV para Excel, CSV para JSON, JSON para CSV, XML para Excel, Excel para XML ou PDF para Excel — essas leem o seu arquivo e gravam o resultado dentro desta aba, e nada é enviado para lugar nenhum. Excel para PDF e os três conversores de planilhas enviam, sim, o arquivo ao nosso servidor por uma conexão criptografada, porque precisam de um aplicativo de planilhas de verdade para diagramar uma página ou levar formatação e gráficos de um formato para outro; ele é convertido e excluído na hora, e nada fica armazenado, registrado ou compartilhado.

Por que o Excel estraga meu CSV quando eu só dou dois cliques nele?

Porque o Excel adivinha cada célula de forma independente e nunca pergunta. Zeros à esquerda somem, IDs longos viram notação científica, datas trocam entre dia primeiro e mês primeiro, e um arquivo com ponto e vírgula cai em uma só coluna. CSV para Excel decide uma vez por coluna, a partir de todos os valores dela, e mostra cada decisão antes do download, para você corrigir em vez de descobrir depois.

Por que aparecem caracteres estranhos no lugar dos meus acentos?

Um CSV não registra a própria codificação, então o Excel recorre à antiga página de código regional do seu computador, a menos que o arquivo comece com uma marca de ordem de bytes (BOM). Escolha “UTF-8 com BOM” em Excel para CSV e acentos, cirílico, árabe, chinês e emojis abrem corretamente. UTF-8 simples, sem a marca, é a escolha certa para bancos de dados e código, que não a querem.

O que acontece com as minhas fórmulas?

De planilha para planilha, elas são levadas como fórmulas e continuam calculando; uma função que só existe de um dos lados aparece como #NOME? até você substituí-la. Na saída para CSV, JSON ou XML, só o resultado calculado é gravado, porque esses formatos não têm onde colocar uma fórmula. No caminho inverso, uma célula que começa com = é gravada como texto, nunca como fórmula ativa, então um CSV malicioso não consegue executar nada quando a planilha é aberta.

Existe limite de tamanho de arquivo ou limite diário?

Sem conta, sem cota, sem limite diário. As ferramentas do navegador são limitadas pela memória do seu dispositivo; os conversores de planilhas aceitam arquivos de até 50 MB e o Excel para PDF até 40 MB, e ambos avisam com clareza se o seu for maior.

Vai ter marca d'água ou limite de linhas?

Não. Nada aqui limita o número de linhas, carimba um aviso de versão de teste em uma aba ou corta seus dados. O único limite de linhas é o do próprio Excel, 1.048.576, e arquivos mais longos continuam em abas extras em vez de serem cortados. São os anúncios na página que mantêm tudo gratuito.