Comment convertir un fichier Excel en Base64
- Déposez un fichier
.xlsx,.xlsou.csvdans la zone, ou choisissez-le avec le sélecteur de fichiers. - Sortie en est réglé sur Base64 brut. Choisissez JSON pour inclure le nom du fichier, le type MIME et la taille.
- Copier la sortie, ou Enregistrer en .txt pour les gros classeurs.
De quel tableur s’agit-il ?
| Fichier | Le Base64 commence par | Type MIME |
|---|---|---|
.xlsx, .xlsm | UEsDB (ZIP) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xls | 0M8R4KGxGuE (OLE2) | application/vnd.ms-excel |
.xlsx protégé par mot de passe | 0M8R4KGxGuE | identique à .xlsx |
.csv, UTF-8 avec BOM | 77u/ | text/csv |
.csv, sans BOM | le texte lui-même, par ex. bmFtZSxxdHkK pour name,qty suivi d’un saut de ligne | text/csv |
Les sorties data URI et JSON utilisent le type indiqué par votre navigateur. Sur les ordinateurs Windows où Excel est installé, le système étiquette souvent les fichiers .csv comme application/vnd.ms-excel. Si une API est stricte sur le CSV, remplacez le type par text/csv à la main.
Le CSV n’est que du texte
Un fichier CSV est du texte brut : son Base64 se décode donc en lignes lisibles. Cela a quelques conséquences :
- L’encodage des caractères voyage avec les octets. Un CSV enregistré par Excel dans une ancienne page de code, comme Windows-1252, se décode avec des caractères erronés si le destinataire suppose de l’UTF-8. Préférez « CSV UTF-8 » à l’enregistrement.
- Un gros CSV se réduit beaucoup avec gzip ou ZIP, ce qui vaut la peine avant l’encodage si l’API accepte des envois compressés. Un
.xlsxest déjà un ZIP : le recompresser ne fait presque rien gagner. - Pour jeter un œil rapide à un CSV reçu en Base64, Base64 en CSV le décode et l’affiche en texte.
Où les tableurs circulent en Base64
- Les API de rapports et d’import qui acceptent un classeur dans un corps JSON, par exemple pour des imports en masse de produits ou de prix.
- Les plateformes d’automatisation qui se passent des fichiers d’une étape à l’autre sous forme de chaînes Base64, par exemple pour lire une pièce jointe d’e-mail et l’envoyer vers un stockage.
- Les API d’envoi d’e-mails, où un tableur joint est placé en Base64 dans un champ JSON.
- Les liens de téléchargement dans du HTML généré, avec la sortie HTML
<a download>, pour qu’une page de rapport embarque son propre.xlsx.
Encoder et vérifier le format en 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
Une vérification de ce genre détecte une erreur d’envoi fréquente : un « tableur » qui est en réalité une page d’erreur HTML, ou un vieux .xls renommé en .xlsx. Plus d’informations sur les fichiers dans Base64 en Python, et Base64 en Excel affiche un aperçu d’un classeur en Base64 et l’enregistre dans un fichier.
FAQ
Quel est le type MIME d'un fichier XLSX ?
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. L’ancien format .xls utilise application/vnd.ms-excel, et le CSV text/csv.
Pourquoi le Base64 de mon CSV commence-t-il par 77u/ ?
77u/ est l’indicateur d’ordre des octets (BOM) UTF-8 (EF BB BF). Excel l’ajoute quand vous enregistrez en « CSV UTF-8 ». La plupart des parseurs le gèrent, mais certains le considèrent comme faisant partie du nom de la première colonne : supprimez-le si un en-tête comme name ne correspond plus.
Puis-je envoyer un fichier Excel dans une requête JSON ?
Oui. Encodez-le en Base64 brut et placez-le dans le champ de contenu de fichier documenté par votre API, avec le nom du fichier et le type MIME. La sortie JSON montre la structure : name, type, size et data.