Skip to content
Back to Blog
how-to-convert

Como Converter XLSX para CSV (E Evitar Dores de Cabeça com Codificação)

2026-05-17 8 min de leitura

Por que as Conversões de XLSX para CSV Dão Errado

Eles parecem tão similares. XLSX e CSV são ambos tabelas de dados, certo? Mas, por baixo dos panos, são animais completamente diferentes. Um arquivo XLSX é um pacote complexo — um arquivo zip de documentos XML que contém múltiplas planilhas, formatação rica de células, fórmulas e até imagens. Um CSV é apenas texto. As linhas terminam com uma quebra de linha, e as colunas são divididas por um caractere, como uma vírgula. Quando você achata essa estrutura rica do XLSX em texto puro, está pedindo para ter problemas. As maiores dores de cabeça vêm de incompatibilidades de codificação. Se sua planilha contém quaisquer caracteres especiais — letras acentuadas como 'é' ou 'ñ', símbolos de moeda como '€', ou texto não latino — o CSV de saída precisa, obrigatoriamente, usar a codificação de caracteres correta, que quase sempre é UTF-8. Muitas ferramentas usam por padrão codificações mais antigas, como a Windows-1252, que transformarão esses caracteres em pontos de interrogação. Um nome de cliente como 'José García' vira 'Jos? Garc?a', e a importação para o seu CRM falha. Conflitos de delimitador são outro problema clássico. Se o seu CSV usa vírgulas para separar colunas, o que acontece com uma célula que contém uma vírgula, como o endereço 'Rua Carvalho, 14, Sala 200'? Um bom gerador de CSV envolve esse valor em aspas duplas. Mas se os próprios dados contêm aspas duplas, elas devem ser escapadas duplicando-as ('Ele disse "olá"' vira '"Ele disse ""olá"""'). Saber onde essas minas terrestres estão escondidas antes de começar a converter vai te poupar horas de depuração dolorosa.

A Decisão da Codificação: UTF-8, UTF-8 com BOM ou Outra Coisa

Antes de converter qualquer coisa, tome uma decisão crucial: de qual codificação o seu sistema de destino precisa? Acerte isso, e você evitará a grande maioria dos problemas de conversão. Para quase todos os sistemas modernos, a resposta é UTF-8. Ponto final. Bancos de dados, scripts em Python, APIs web — todos eles esperam e lidam com UTF-8 perfeitamente. Se você está passando o CSV para o pandas com `pd.read_csv()`, UTF-8 é o padrão e simplesmente funciona. O mesmo vale para o comando `COPY` do PostgreSQL ou o `LOAD DATA INFILE` do MySQL quando você especifica `CHARACTER SET utf8mb4`. Depois, temos o UTF-8 com BOM (Byte Order Mark). Essa variante adiciona três bytes invisíveis (0xEF, 0xBB, 0xBF) no início do arquivo. Por que ele existe? Para ajudar o Microsoft Excel. No Windows, o Excel frequentemente assume que um CSV está codificado em Windows-1252, a menos que veja esse BOM, bagunçando quaisquer caracteres especiais. Então, aqui está a regra simples: se um humano for abrir o CSV diretamente no Excel, use UTF-8 com BOM. Se um script ou programa for lê-lo, use UTF-8 puro, porque esse BOM pode engasgar muitos parsers. Codificações mais antigas como Windows-1252 (ou ANSI) e ISO-8859-1 (Latin-1) são relíquias. Elas só suportam caracteres da Europa Ocidental e corromperão quaisquer dados de outros idiomas. Você pode encontrá-las em sistemas legados, mas nunca deve escolhê-las para um novo fluxo de trabalho. O [conversor de XLSX para CSV](/convert/xlsx-to-csv) da CocoConvert permite que você escolha a codificação logo de cara, um recurso essencial que muitas ferramentas gratuitas inexplicavelmente omitem. Basta escolher UTF-8 para sistemas e UTF-8 com BOM para o Excel.

Passo a Passo: Convertendo XLSX para CSV com o CocoConvert

O processo é simples, mas o diabo mora nos detalhes. Algumas configurações aqui farão toda a diferença no seu resultado final. 1. Acesse a [página de XLSX para CSV do CocoConvert](/convert/xlsx-to-csv) e envie seu arquivo. Você pode processar arquivos de até 50 MB sem uma conta, e arquivos maiores exigem apenas um registro gratuito. Se o seu XLSX for um verdadeiro monstro — alguns relatórios corporativos podem ter centenas de megabytes — você precisará usar uma ferramenta de desktop como o LibreOffice Calc ou um script, que abordaremos mais adiante. 2. Selecione a planilha a ser exportada. Um arquivo XLSX pode conter muitas planilhas, mas um CSV só pode representar uma. O CocoConvert lista todas as planilhas do seu arquivo em um menu suspenso. Se precisar exportar todas as planilhas, você terá que convertê-las uma de cada vez. 3. Escolha seu delimitador. A vírgula é o padrão, mas é uma péssima escolha se seus dados estiverem cheios delas (pense em descrições de texto livre ou endereços). Na Europa, o ponto e vírgula é uma alternativa comum e muitas vezes mais segura. A separação por tabulação (TSV) é outra ótima opção se o seu texto contiver tanto vírgulas quanto pontos e vírgulas. 4. Defina a codificação. Você já sabe como funciona: UTF-8 para uso programático, UTF-8 com BOM se o arquivo for destinado ao Excel de alguém. 5. Decida como lidar com as fórmulas. O CocoConvert exporta o *valor* calculado de uma célula, não a fórmula em si. Uma célula com `=SOMA(A1:A10)` que exibe `4500` se tornará `4500` no CSV. Isso é exatamente o que você quer em 99% das vezes. Se você realmente precisa do texto da fórmula, não deveria estar convertendo para CSV para começo de conversa. 6. Baixe e verifique. **Não abra o CSV no Excel para verificá-lo.** Confie em mim. Abra-o primeiro em um editor de texto de verdade, como o Notepad++ no Windows ou o BBEdit no Mac. Essas ferramentas mostram o texto bruto e permitem confirmar se a codificação está correta. Encontre uma linha com caracteres especiais e certifique-se de que eles pareçam certos antes mesmo de pensar em importá-lo para o seu sistema de destino.

Fazendo no Excel e no LibreOffice (Quando Você Precisa de Controle Local)

Às vezes, você precisa converter localmente. Talvez o arquivo contenha dados sensíveis que não podem ser enviados para a nuvem, ou seja um gigante de 200 MB que engasga as ferramentas online. Tanto o Excel quanto o LibreOffice podem dar conta do recado, mas cada um tem suas peculiaridades. No Microsoft Excel (Office 365 / Excel 2019+): Abra seu XLSX, navegue até Arquivo → Salvar Como e, na lista suspensa 'Salvar como tipo', escolha 'CSV UTF-8 (Delimitado por vírgulas) (*.csv)'. Essa opção, que a Microsoft *finalmente* adicionou no Excel 2016, salva corretamente com a codificação UTF-8 com BOM. Tenha cuidado para não escolher a opção simples 'CSV (Delimitado por vírgulas)'; ela salva usando a antiga codificação Windows-1252, uma armadilha que já pegou inúmeros desenvolvedores. O Excel avisará que apenas a planilha ativa será salva. Clique em OK e repita para quaisquer outras planilhas que precisar. No LibreOffice Calc (uma ferramenta fantástica, gratuita e multiplataforma): Abra o arquivo, vá para Arquivo → Salvar uma Cópia... (usar 'Salvar Como' alteraria seu arquivo atual). Selecione 'Texto CSV (.csv)' como o formato e confirme que deseja Manter o Formato Atual. Isso abre uma caixa de diálogo poderosa com opções explícitas. Você pode definir o Delimitador de campo, o Delimitador de texto (deixe como aspas duplas) e, o mais importante, o Conjunto de caracteres. Escolha 'Unicode (UTF-8)'. O LibreOffice gera corretamente um arquivo UTF-8 puro sem BOM, tornando-o ideal para uso programático. Eis a limitação de ambas as ferramentas: nenhuma delas lhe dá controle sobre como valores nulos, células vazias ou booleanos são representados. Se o seu processo downstream precisa de strings vazias para nulos em vez de apenas nada, ou espera `1`/`0` em vez de `VERDADEIRO`/`FALSO`, você está sem sorte. Você terá que fazer uma limpeza no CSV com um script mais tarde ou usar uma ferramenta mais poderosa desde o início.

Conversão com Script em Python (Para Fluxos de Trabalho Repetíveis)

Quando você precisa converter o mesmo tipo de arquivo XLSX repetidamente — como um relatório semanal do sistema de contabilidade — cliques manuais são uma receita para o erro. Um script simples em Python é mais rápido, mais confiável e executa em segundos. Primeiro, você precisará das bibliotecas `openpyxl` e `pandas`. Instale-as com `pip install openpyxl pandas`. Então, o código é notavelmente limpo: ```python import pandas as pd df = pd.read_excel('report.xlsx', sheet_name='Sales Data', engine='openpyxl') df.to_csv('report.csv', index=False, encoding='utf-8') ``` O parâmetro `sheet_name` pode ser o nome da planilha como uma string ou seu número de índice baseado em zero. Não se esqueça de `index=False`; isso impede que o pandas escreva seus próprios números de linha na primeira coluna, o que definitivamente confundirá a maioria das ferramentas de importação. Para o parâmetro `encoding`, `'utf-8'` cria um arquivo UTF-8 padrão, sem BOM. Se você sabe que a saída vai diretamente para um usuário do Excel, use `'utf-8-sig'` para incluir o BOM. O Pandas também é inteligente com datas, analisando-as em objetos `datetime64`. Ele as escreve no formato ISO 8601 (`AAAA-MM-DD HH:MM:SS`), que a maioria dos bancos de dados adora. Se o seu sistema de destino for exigente e precisar de algo como `DD/MM/AAAA`, basta adicionar o argumento `date_format='%d/%m/%Y'` à sua chamada `to_csv()`. Para arquivos enormes (mais de 50.000 linhas), o `openpyxl` carrega o arquivo inteiro na memória, então `pd.read_excel()` pode ser lento. A escrita também pode ser um gargalo. Se você está atingindo limites de memória, pode escrever o CSV em blocos. E se estiver lidando com arquivos `.xls` antigos, o motor `xlrd` é mais rápido, mas para arquivos `.xlsx` modernos, fique com o `openpyxl`. Se você tem várias planilhas para exportar, `pd.read_excel('report.xlsx', sheet_name=None)` é uma mão na roda. Ele retorna um dicionário onde as chaves são os nomes das planilhas e os valores são os DataFrames. Você pode então iterar por este dicionário e salvar cada planilha em seu próprio arquivo CSV — a maneira perfeita de automatizar a exportação de uma pasta de trabalho completa.

Validando seu CSV Antes que Ele Chegue ao seu Banco de Dados

Um CSV pode parecer perfeito em uma pré-visualização e ainda assim destruir a importação do seu banco de dados. Qualquer um que já viu um trabalho de importação falhar silenciosamente após 20 minutos conhece essa dor. Alguns passos rápidos de validação podem pegar esses probleminhas mais cedo. Primeiro, verifique a contagem de linhas. Se o seu XLSX tinha 12.847 linhas de dados e um cabeçalho, seu CSV deve ter exatamente 12.848 linhas. No Linux ou macOS, `wc -l report.csv` lhe dá a resposta instantaneamente. Se os números não baterem, uma célula provavelmente continha um caractere de nova linha — um problema comum em campos de 'notas' onde os usuários simplesmente apertam Enter. Um bom gerador de CSV deveria colocar isso entre aspas corretamente, mas é um ponto de falha frequente. Em seguida, verifique seus caracteres especiais. Encontre uma linha no XLSX original com um acento, um símbolo de moeda ou texto não latino. Agora abra o CSV em um editor de texto que mostre a codificação do arquivo (tanto o VS Code quanto o Notepad++ fazem isso). Confirme se a codificação é a que você escolheu e se os caracteres foram renderizados corretamente. Teste o delimitador. Se você usou uma vírgula, procure no texto bruto por vírgulas que não estejam dentro de aspas. Um comando `grep` rápido no Linux (`grep -P '(?<!\" ),[^\"\\n]*(?<!\" ),' report.csv`) pode ajudar a encontrar linhas onde as aspas podem ter sido esquecidas, embora você talvez precise ajustar a regex para seus dados específicos. Finalmente, valide alguns tipos de dados de colunas. Se uma coluna deveria ser toda de números inteiros, verifique-a. Em Python, você pode carregar o CSV e verificar `pd.read_csv('report.csv')['order_id'].dtype`. Deveria dizer `int64`. Se disser `object`, você tem um problema — um caractere de texto perdido, um erro `#N/A` que você não viu, ou um símbolo de moeda que se infiltrou em uma célula numérica. Gastar cinco minutos com essas verificações vai te poupar horas depurando um carregamento de dados que falhou.

Casos Especiais Comuns e Limitações Honestas

Mesmo com as ferramentas certas, alguns recursos do XLSX simplesmente não se mapeiam de forma limpa para o mundo simples do CSV. Aqui estão algumas armadilhas comuns. Células mescladas: As células mescladas do Excel são um truque visual. Quando você converte para CSV, apenas o valor da célula superior esquerda da área mesclada sobrevive; as outras células se tornam vazias. Sejamos claros: não há uma solução limpa e automatizada para isso. Você deve desmesclar as células no Excel *antes* de converter (Selecionar Tudo, Formatar → Células → Alinhamento, desmarque 'Mesclar células') e preencher manualmente as células agora vazias. Linhas de cabeçalho múltiplas: É comum ver relatórios com duas ou três linhas de cabeçalho — uma categoria principal, uma subcategoria e, em seguida, os nomes reais das colunas. Os parsers de CSV são feitos para exatamente uma linha de cabeçalho. Este é outro trabalho de limpeza manual; você terá que simplificar os cabeçalhos no XLSX ou excluir as linhas extras do CSV antes que ele seja útil. Erros de fórmula: Se uma célula no Excel mostra `#REF!`, `#DIV/0!` ou `#VALOR!`, esse texto exato é o que será escrito no seu CSV. Essas strings vão envenenar qualquer coluna numérica e causar erros de tipo durante a importação. Limpe-os primeiro no Excel, seja corrigindo os dados de origem ou envolvendo as fórmulas em uma função `SEERRO()`. Arquivos muito grandes: O CocoConvert é generoso, lidando com arquivos de até 50 MB gratuitamente e 200 MB com uma conta. Para qualquer coisa maior, uma ferramenta online não é prática. Mude para o método Python/pandas ou use a ferramenta de linha de comando do LibreOffice (`libreoffice --headless --convert-to csv nome_do_arquivo.xlsx`). Arquivos XLSX protegidos por senha: Nenhuma ferramenta online, incluindo o CocoConvert, pode abrir um arquivo protegido por senha. Você mesmo precisa remover a senha no Excel (Arquivo → Informações → Proteger Pasta de Trabalho → Criptografar com Senha), salvar o arquivo e, em seguida, enviá-lo. Imagens e gráficos: Estes são descartados silenciosamente. Eles simplesmente não existem no formato CSV. Se sua planilha era principalmente um gráfico com uma pequena tabela de dados, o gráfico desaparecerá no éter, deixando apenas o texto. Não é um erro, apenas uma limitação fundamental do CSV.

Ready to convert?

Try it now — fast, secure, and private.

Convert Now →