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 TSV 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 TSV
O motivo de preferir saída separada por tabulação é estreito e prático. Endereços têm vírgula. Descrições de produto têm vírgula. Números formatados em boa parte do Brasil e da Europa têm vírgula como separador decimal. Num arquivo separado por vírgula, cada um desses precisa ser envolvido em aspas, e todo consumidor do arquivo precisa implementar citação corretamente para achar as fronteiras de coluna de novo.
Tabulações normalmente não aparecem no dado, então o delimitador e o conteúdo param de competir. A saída desta conversão grava uma célula lendo "Widget, pequeno" exatamente assim, sem aspas em lugar nenhum da linha. `cut -f2` encontra ela. `awk -F"\t"` encontra ela. Um campo de texto em algum outro programa encontra ela. Nada precisa interpretar; as coisas só precisam dividir. Essa é a diferença inteira de confiabilidade entre os dois delimitadores, e é por isso que um arquivo separado por tabulação pode ser tratado corretamente por um comando de shell de uma linha, enquanto um separado por vírgula precisa de uma biblioteca que entenda aspas, aspas escapadas e quebras de linha dentro de um campo.
Tabulações ocasionalmente acabam dentro de células de planilha — coladas de outro lugar, digitadas por acidente, herdadas de uma exportação de sistema. Quando isso acontece, o conversor grava essa célula envolvida em aspas duplas, porque a alternativa é uma linha que silenciosamente ganha uma coluna a mais.
Essa é a saída correta, e um analisador completo trata isso, mas as ferramentas de shell para as quais este formato é escolhido não tratam: `cut -f` conta tabulações e não sabe nada sobre aspas, então vê um campo a mais a partir dessa linha em diante. Se um pipeline está produzindo saída desalinhada em algumas linhas, quase sempre é por isso. Encontre e remova tabulações na planilha de origem em vez de remendar adiante. O mesmo vale para uma célula contendo quebra de linha, comum numa coluna de observações ou endereço, que força a mesma citação. Se uma planilha tem campos de texto livre, o destino mais seguro é o NDJSON, onde os dois caracteres são escapados dentro do valor e um registro nunca consegue quebrar uma linha.
Uma pasta de trabalho pode ter trinta planilhas. Um arquivo separado por tabulação guarda uma tabela com uma linha de cabeçalho, e não há sintaxe nele para mais nada. A conversão, portanto, pega a primeira planilha e deixa o resto, que é o único comportamento que não pode silenciosamente produzir um arquivo mesclado que ninguém pediu.
Se a planilha que você quer não é a primeira, mova ela na pasta de trabalho e converta de novo — leva menos tempo que ler este parágrafo. Se você precisa de várias planilhas, converta várias vezes e guarde as saídas como arquivos separados, que é o que um pipeline quer de qualquer forma: juntar dois arquivos por uma chave é um comando; desfazer duas tabelas que foram concatenadas numa só não é. Vale saber qual planilha é realmente a primeira, porque nem sempre é a que abre. Uma pasta de trabalho lembra qual planilha estava ativa quando foi salva, então a aba que você vê ao abrir pode ser a terceira, e a conversão vai pegar a mais à esquerda de qualquer forma.
Uma planilha não guarda datas. Ela guarda uma contagem de dias e um formato de exibição, e o calendário que você vê na célula é o formato fazendo o trabalho dele. Converter lê o valor, não a fantasia, então 1º de janeiro de 2024 chega como 45292, e um timestamp chega como esse número com uma fração anexada para a hora do dia.
A contagem começa no fim de dezembro de 1899, o que explica os números estarem na casa dos quarenta mil para qualquer coisa recente. Converta eles onde você for usar — `date -d "1899-12-30 +45292 days"` num shell, ou o equivalente em qualquer coisa que leia o arquivo — em vez de reformatar a planilha primeiro, porque uma data escrita como texto é um novo problema de interpretação no lugar de um problema de aritmética. O número também é o sinal de que uma coluna é uma data. Se um campo que você esperava conter 2024-03-11 contém 45362, nada deu errado; você está vendo o que a planilha sempre guardou, sem a formatação que estava escondendo isso.
A linha de cabeçalho fornece os nomes das colunas, e o conjunto de colunas é a união das chaves encontradas em todas as linhas, não só as da primeira. Uma planilha em que um bloco posterior de linhas carrega um campo extra ainda produz um arquivo com esse campo no cabeçalho.
Células vazias continuam como campos vazios em vez de desaparecer, então toda linha tem a mesma quantidade de tabulações e o arquivo continua retangular. Isso é exatamente o que uma ferramenta posicional precisa. Também significa que um campo vazio é genuinamente ambíguo entre "em branco" e "não se aplica", que nenhum formato delimitado jamais conseguiu expressar, e nenhum conversor consegue inventar.
Um código guardado como texto na pasta de trabalho sai com seus zeros intactos: 007 continua 007, e uma referência de conta com zeros à esquerda fica intocada. Vale dizer isso porque o oposto é tão comum — um CSV aberto no Excel e salvo de novo transforma essas colunas em números, e os zeros somem antes de qualquer conversão acontecer.
O que isso não consegue consertar é dano que já foi feito. Se a própria pasta de trabalho guarda 7 porque alguém importou um CSV sem cuidado no mês passado, o TSV vai guardar 7 também. Confira uma coluna de código na planilha de origem antes de converter; o alinhamento da célula normalmente denuncia, já que texto fica à esquerda e números à direita. Uma coluna em que alguns valores estão alinhados à esquerda e alguns à direita é o pior caso, porque significa que a coluna é metade texto e metade número, e nenhuma ferramenta adiante vai tratar as duas metades da mesma forma.
As linhas são separadas por uma única quebra em vez de um par de retorno de carro, e o texto é UTF-8. É o que um pipeline Unix, um diff do Git e a maioria dos importadores modernos esperam. Uma ferramenta do Windows que insiste na outra convenção normalmente ainda vai ler, e qualquer uma que não leia pode ser apontada para um conversor próprio.
A saída é texto puro, então também sobrevive a ser colada em vez de enviada — num cliente de banco de dados, num campo de formulário, numa mensagem de chat, num editor de texto. Vale lembrar esse caminho quando o destino tem uma tela de importação em que você não confia e uma caixa de colar em que confia.
O Postgres lê esse formato diretamente com COPY, e o detalhe que vale saber é o que ele faz com campos em branco: no formato de texto dele, um campo vazio é uma string vazia, não um nulo, e só o marcador \N significa nulo. Se a coluna de destino é numérica e a planilha tem lacunas, essa diferença é a mensagem de erro que você vai receber.
O R lê com `read.delim`, que já presume tabulação, e o pandas com `sep="\t"`. Em todos esses casos, especifique tipos de coluna para qualquer coisa que seja um identificador em vez de uma quantidade, porque cada um deles, de outra forma, vai aplicar exatamente a inferência numérica que transformou 007 em 7 em primeiro lugar.
A interpretação e a gravação acontecem as duas no seu navegador, então nada é enviado, e não há fila, não há plano e não há limite de linhas além da memória da sua máquina. Uma pasta de trabalho de cinquenta mil linhas em seis colunas converte num instante e produz cerca de 1,8 MB de texto separado por tabulação, a partir de um .xlsx de aproximadamente 4,3 MB.
O teto é o arquivo inteiro sendo mantido na memória de uma vez, o que coloca dezenas de megabytes confortavelmente dentro do alcance e centenas no ponto em que uma aba tensiona. Além disso, a ferramenta certa é um leitor por streaming num script, em vez de qualquer conversor baseado em navegador, e dizer isso é melhor do que falhar no meio de um arquivo muito grande.
Escolha CSV em vez disso se o destino é uma tela de importação que nomeia ele especificamente, porque uma ferramenta que diz CSV frequentemente quer dizer isso literalmente e não vai aceitar outro delimitador por mais sensato que ele seja. Escolha NDJSON se os valores precisam manter os tipos ao longo da jornada, já que um arquivo delimitado não tem como distinguir o número 7 do texto "7".
Escolha SQL se as linhas vão entrar numa tabela que já existe, e Parquet se vão entrar num motor de análise que vai consultar elas repetidamente. TSV é a resposta certa para um caso específico: ferramentas de texto que dividem por um caractere, onde esse caractere não pode aparecer no dado.
| XLSX | TSV | |
|---|---|---|
| Nome completo | Pasta de trabalho do Excel | Tab-Separated Values |
| Extensão do arquivo | .xlsx | .tsv, .tab |
| Tipo de mídia | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | text/tab-separated-values |
| Publicado pela primeira vez | 2007 | 1993 |
| Publicado por | Microsoft | — |
| Especificação | ECMA-376 | IANA text/tab-separated-values |
| Licença | Padrão aberto | Padrão aberto |
| Situação hoje | Atual | Atual |
| Abre no navegador | Nenhum navegador | Nenhum navegador |
| Considerado no lugar | CSV, ODS, Parquet | CSV, JSON |
Microsoft Excel e LibreOffice Calc leem tanto XLSX quanto TSV, então dá para comparar o resultado com o original sem um segundo programa.
Os dois miram trabalhos diferentes: XLSX em a edição, TSV em mover dados entre programas. 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.
TSV e de 1993, descrito em IANA text/tab-separated-values. Microsoft Excel, LibreOffice Calc e pandas 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 TSV 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 Tab-Separated Values.