Como Corrigir Tabelas Mal Formatadas e Exportá-las para Excel
14/06/2025
Como identificar e tratar tabelas da web mal formatadas, que ao serem copiadas para o Excel se transformam em colunas únicas. Apresentamos soluções. Id: 63

📝 Introdução
Muitas vezes ao copiar tabelas da internet — especialmente aquelas construídas com <div> em vez de <table> em HTML — a colagem no Excel sai completamente mal formatada: uma longuíssima coluna com todos os dados misturados, sem delimitação por células. Isso acontece porque tais tabelas não têm marcas explícitas de colunas (<td>) e linhas (<tr>), resultando em conteúdo sequencial com quebras de parágrafo em vez de tabulações para separar células.
Este artigo explora:
- Por que isso acontece tecnicamente.
- Como identificar tabelas mal formatadas.
- Alternativas manuais (Notepad++, OneNote).
- Automatização com Python + openpyxl (ou bibliotecas similares).
- Outros métodos e ferramentas existentes.
- Limitações do método e quando usar abordagens diferentes.
1. O problema das tabelas com <div>
Tabelas formatadas com <div> tantas vezes são utilizadas via CSS para layout, mas não seguem a estrutura semântica e funcional de uma table (tabela) HTML. Na hora de copiar e colar:
- O conteúdo é extraído como texto corrido, com quebras de parágrafo em vez de colunas.
- O Excel interpreta apenas as quebras de linha, ignorando onde as células deveriam estar.
- O resultado é uma única coluna de dados, o que dificulta montagens de planilhas úteis.
Isso foi demonstrado neste vídeo sobre o tema: ao colar uma tabela <div> mal formatada no Notepad++ sem tabulações, apenas com quebras de linha, nota-se que “em vez de tabs ... você tem marcas de parágrafo”. Essa é a raiz do problema.
2. Como identificar esse problema
Considere que os textos prontos para serem colados no Excel devem ter a forma de colunas separadas por tabulações (\t ou → quando visto no Notepad++) e linhas separadas por marcas de quebra de linha (\r\n ou \r ou \n ; CR ou LF);
Exemplo de tabela pronta para exportação para o Excel (visão da tabela em texto no Notepad++ e depois de exportada para o Excel):

2a. Para reconhecer uma tabela ruim:
- Cole-a primeiro em um aplicativo como o Notepad++, que exibe símbolos de controle, como marcas de quebra de linha (\r\n, CR e LF) ou tabulações (\t ou →).
- Se os dados estiverem separados apenas por \r ou \n (nova linha), sem \t (tab), significa que você não tem delimitadores de célula.
- Outro sinal: ao colar no Excel, só há uma coluna preenchida.
- Você também pode consultar o DevTools do navegador (acesso pela tecla F12 ou botão direito do mouse sobre a tabela e depois clicar em inspecionar) — veja se a tabela usa <div> em vez de <table>.
Este diagnóstico manual é fundamental antes de escolher o método de correção.
3. Soluções manuais rápidas
✂️ Notepad → Excel
- Cole o texto em um editor de texto como o Notepad++.
- Substitua linhas vazias e quebras por tabulações (\t), usando substituir (Ctrl+H).
- Copie o resultado e cole no Excel.
Funciona bem em tabelas simples, com padrão fixo, mas é tedioso e sujeito a erros em documentos grandes ou frequentes.
🖼️ Imagem → OneNote → Excel
Quando a tabela está em formato de imagem:
- Copie e cole a imagem no OneNote.
- Clique com botão direito → “Copiar Texto da Imagem”.
- Cole o texto em um editor, faça ajustes se necessário, depois cole no Excel.
O vídeo indicado acima demonstra isso. O método é útil quando a fonte é imagem, não HTML. Para saber se uma tabela está no formato de imagem, tente selecionar algum texto dela com o mouse. Se não conseguir selecionar texto individual ao clicar no mouse, isso indica, em princípio, que se trata de uma tabela em formato imagem.
4. Automatização com Python
Para automatizar todo o processo de transformar texto em tabela utilizável no Excel, você pode criar um script Python — como o compartilhado neste link do Github :
- Recebe um arquivo entrada.txt com o conteúdo da tabela mal formatada.
- O usuário informa a quantidade de colunas da tabela.
- O script substitui quebras de linha por tabulações na quantidade e locais certos.
- Em seguida, usa a biblioteca openpyxl para criar um arquivo .xlsx, inserindo dados conforme colunas calculadas.
Esse método transforma o formato linear em colunas bem definidas.
Aplicativos
O ChatGPT indica alternativas de aplicativos para realizar essa tarefa. Não os testei. Veja:
- tablepyxl: converte tabelas HTML (adequadamente formatadas) diretamente em planilhas com formatação, estilos, merges e mais;
- html2xlsx: usando pandas, lxml, xlsxwriter para converter HTML em planilhas github.com;
- html2excel: foca em tabelas complexas, com merges e quebras de linha .
Como o pandas simplifica
Um método comum:
import pandas as pdtables = pd.read_html('pagina.html')tables[0].to_excel('saida.xlsx', index=False)
Pandas usa lxml ou BeautifulSoup para extrair <table> bem formadas e coloca diretamente num Excel. Mas essa abordagem não funciona bem em páginas com renderização client-side, como as escritas em NextJs, por exemplo. Em teste que fiz com o artigo 11, que apresenta um tabela bem estruturada, não funcionou.
Então, criei exemplos de teste. Um com uma tabela bem formatada e outro com tabela mal formatada. Neste link do Colab você encontra os exemplos de teste.
O primeiro exemplo, com a tabela bem formatada, funciona perfeitamente. Já o segundo exemplo, com a tabela mal formatada, não funciona. O pandas não consegue extrair os dados corretamente.
Para a importação de tabelas bem formatadas, o próprio Excel apresenta funcionalidade de importação:Dados → Obter Dados → Da Web. Basta informar a URL da página com a tabela.
O Excel irá importar a tabela corretamente, desde que esteja bem estruturada.
5. Outros métodos
🧩 Copy-paste via navegador
O Excel, por padrão, reconhece HTML com <table>, inclusive cor e estilo. Assim, é possível copiar uma table no DevTools e colar diretamente no Excel com boa formatação.
💻 Exportação via script JS
É possível gerar no browser um arquivo .xls com frontend:
- Captura outerHTML de uma div que contém <table>.
- Insere num link com data:application/vnd.ms-excel.
- Dispara download automático .
Essa abordagem funciona, mas exige que o HTML seja bem estruturado.
6. Limitações do método baseado em texto e tabulação
O script automatizado, indicado acima, funciona bem em tabelas com padrão constante, número fixo de colunas e linhas não mescladas. Mas não funciona quando:
- Há colspan/rowspan (mesclagens).
- O padrão de dados varia (linhas irregulares).
- Células internas têm quebra de linha complexa ou formatação especial.
Nestes cenários, bibliotecas como tablepyxl, html2excel, pandas ou serviços como API2PDF podem ser melhores.
7. Quando usar cada abordagem
Soluções para Diferentes Tipos de Tabelas Web
Tabela <div>, padrão simples, sem mesclagemO mencionado script Python com openpyxlTabela <table> bem formadaCopy-paste direto ou pandas / tablepyxlHTML complexo ou grandes com mergeshtml2excel ou html2xlsxAutomação sem instalar nadaAPI2PDF ou frontend JS com link .xlsFonte em imagemOneNote + script de tabulação ou posterior manipulação no Notepad++. Possível uso de expressões regulares para casos um pouco mais complexos.8. Exemplo prático – o vídeo apresenta
O vídeo referido acima apresenta dois exemplos:
- Tabela <div> com 10 colunas — O usuário cria um arquivo entrada.txt, roda o script que usa openpyxl e gera .xlsx corretamente.
- Texto repetitivo em <p> — Similar, mas com blocos de parágrafos que seguem um padrão constante, o script converte em tabela organizada.
Isso ilustra bem a flexibilidade da abordagem: o script converte dados “quase tabulares” em planilhas corretas.
9. Boas práticas e dicas
- Visualize os símbolos de controle no Notepad++ para entender quebra/tabulação.
- Use expressões regulares (regex) para padrões complexos. Isso pode ser visto também neste vídeo.
- Crie ambientes virtuais (venv) e instale com pip install openpyxl.
- Teste com amostras de tabela antes de rodar com grandes volumes.
- Desenvolva estratégias para erro de padrão, como colunas extras ou linhas menores, mesclagens etc.
10. Código básico de referência
import openpyxldef txt_para_xlsx(input_txt, output_xlsx, colunas):with open(input_txt, 'r', encoding='utf‑8') as f:linhas = [l.strip() for l in f if l.strip()]dados = []for i in range(0, len(linhas), colunas):dados.append(linhas[i:i+colunas])wb = openpyxl.Workbook()ws = wb.activefor row in dados:ws.append(row)wb.save(output_xlsx)
Inclua tratamento de erros, cabeçalho, contagem de linhas incorretas, etc., conforme visto no script de exemplo.
Conclusão
- Tabelas <div> geralmente não colam corretamente no Excel.
- Métodos manuais (Notepad++, OneNote, substituição com expressões regulares) funcionam, mas são limitados.
- O script Python + openpyxl exemplificado automatiza o processo de transformar texto linear em planilha válida.
- Para casos mais complexos, prefira bibliotecas como tablepyxl, html2excel, html2xlsx ou serviços API.
- Combine visão técnica com automação para economizar tempo e evitar erros.