Como converter um arquivo do Excel para Base64
- Arraste um arquivo
.xlsx,.xlsou.csvpara a caixa, ou escolha-o no seletor de arquivos. - Saída como começa em Base64 puro. Escolha JSON para incluir o nome do arquivo, o MIME type e o tamanho.
- Clique em Copiar saída, ou em Salvar como .txt para pastas de trabalho grandes.
Que planilha é essa?
| Arquivo | O Base64 começa com | MIME type |
|---|---|---|
.xlsx, .xlsm | UEsDB (ZIP) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xls | 0M8R4KGxGuE (OLE2) | application/vnd.ms-excel |
.xlsx protegido por senha | 0M8R4KGxGuE | o mesmo do .xlsx |
.csv, UTF-8 com BOM | 77u/ | text/csv |
.csv, sem BOM | o próprio texto, ex.: bmFtZSxxdHkK para name,qty e uma quebra de linha | text/csv |
As saídas data URI e JSON usam o tipo informado pelo navegador. Em computadores Windows com o Excel instalado, o sistema costuma rotular arquivos .csv como application/vnd.ms-excel. Se uma API for rígida com CSV, troque o tipo para text/csv à mão.
CSV é só texto
Um arquivo CSV é texto puro, então o Base64 dele decodifica para linhas legíveis. Isso tem algumas consequências:
- A codificação de caracteres viaja junto com os bytes. Um CSV salvo pelo Excel numa página de código legada, como Windows-1252, decodifica com caracteres errados se o destino assumir UTF-8. Prefira “CSV UTF-8” ao salvar.
- Um CSV grande encolhe bastante com gzip ou ZIP, e vale a pena compactar antes de codificar se a API aceitar uploads compactados. Um
.xlsxjá é um ZIP, então compactá-lo de novo quase não economiza nada. - Para dar uma olhada rápida num CSV que você recebeu em Base64, o Base64 para CSV decodifica e mostra o conteúdo como texto.
Onde planilhas trafegam em Base64
- APIs de relatórios e importação que aceitam uma pasta de trabalho no corpo JSON, por exemplo para importar produtos ou preços em lote.
- Plataformas de automação que passam arquivos entre etapas como strings Base64, como ler um anexo de e-mail e enviá-lo para um storage.
- APIs de envio de e-mail, em que a planilha anexada vai num campo JSON como Base64.
- Links de download em HTML gerado, com a saída HTML
<a download>, para que uma página de relatório leve o próprio.xlsx.
Codificar e verificar o formato em Python
import base64
from pathlib import Path
SIGNATURES = {
"UEsDB": "xlsx (ZIP)",
"0M8R4KGxGuE": "xls (OLE2) or encrypted xlsx",
"77u/": "text with a UTF-8 BOM, e.g. CSV UTF-8",
}
def encode_sheet(path):
b64 = base64.b64encode(Path(path).read_bytes()).decode("ascii")
kind = next((v for k, v in SIGNATURES.items() if b64.startswith(k)), "other")
return b64, kind
Uma verificação assim pega um erro comum de upload: uma “planilha” que na verdade é uma página de erro em HTML ou um .xls antigo renomeado para .xlsx. Mais sobre arquivos em Base64 em Python, e o Base64 para Excel mostra a prévia de uma pasta de trabalho em Base64 e a salva como arquivo.
Perguntas frequentes
Qual é o MIME type de um arquivo XLSX?
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. O formato antigo .xls usa application/vnd.ms-excel, e o CSV é text/csv.
Por que o Base64 do meu CSV começa com 77u/?
77u/ é o byte-order mark do UTF-8 (EF BB BF). O Excel o adiciona quando você salva como “CSV UTF-8”. A maioria dos parsers lida bem com ele, mas alguns o tratam como parte do nome da primeira coluna; remova-o se um cabeçalho como name parar de bater.
Dá para enviar um arquivo do Excel numa requisição JSON?
Dá. Codifique como Base64 puro e coloque no campo de conteúdo do arquivo que a documentação da sua API indica, junto com o nome do arquivo e o MIME type. A saída JSON mostra o formato: name, type, size e data.