Как конвертировать файл Excel в Base64
- Перетащите файл
.xlsx,.xlsили.csvв поле или выберите его через диалог выбора файла. - В списке Формат вывода уже выбран Чистый Base64. Выберите JSON, чтобы добавить имя файла, MIME-тип и размер.
- Нажмите Скопировать результат или, для больших книг, Сохранить как .txt.
Что это за таблица?
| Файл | Base64 начинается с | MIME-тип |
|---|---|---|
.xlsx, .xlsm | UEsDB (ZIP) | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xls | 0M8R4KGxGuE (OLE2) | application/vnd.ms-excel |
.xlsx с паролем | 0M8R4KGxGuE | как у .xlsx |
.csv, UTF-8 с BOM | 77u/ | text/csv |
.csv без BOM | с самого текста, например bmFtZSxxdHkK для name,qty и перевода строки | text/csv |
В выводе data URI и JSON используется тип, который сообщает браузер. На компьютерах с Windows и установленным Excel система часто помечает файлы .csv как application/vnd.ms-excel. Если API строго проверяет CSV, исправьте тип на text/csv вручную.
CSV хранится как обычный текст
Base64 от CSV декодируется в читаемые строки, и это стоит учитывать:
- Кодировка символов передаётся вместе с байтами. CSV, который Excel сохранил в устаревшей кодовой странице вроде Windows-1252, раскодируется в неправильные символы, если получатель считает, что это UTF-8. При сохранении выбирайте «CSV UTF-8».
- Большой CSV сильно ужимается gzip или ZIP, и это стоит сделать до кодирования, если API принимает сжатые файлы.
.xlsxуже сжат как ZIP, так что повторное сжатие почти ничего не даст. - Чтобы быстро посмотреть CSV, который пришёл в виде Base64, откройте Base64 в CSV: он декодирует данные и покажет их как текст.
Где таблицы передаются в Base64
- API отчётов и импорта, которые принимают книгу в теле JSON-запроса, например для массовой загрузки товаров или цен.
- Платформы автоматизации, которые передают файлы между шагами в виде строк Base64: скажем, берут вложение из письма и загружают его в хранилище.
- API транзакционных рассылок, которые принимают вложения как поля Base64 в JSON.
- Ссылки на скачивание в сгенерированном HTML: формат вывода HTML
<a download>встраивает.xlsxпрямо в страницу отчёта.
Кодирование и проверка формата в 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
Такая проверка ловит частую ошибку при загрузке: «таблицу», которая на деле оказывается HTML-страницей с ошибкой или старым .xls, переименованным в .xlsx. Больше о работе с файлами в статье Base64 в Python, а Base64 в Excel покажет книгу из Base64 и сохранит её как файл.
Вопросы и ответы
Какой MIME-тип у файла XLSX?
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet. У старого формата .xls тип application/vnd.ms-excel, у CSV – text/csv.
Почему Base64 моего CSV начинается с 77u/?
77u/ кодирует метку порядка байтов UTF-8 (BOM, EF BB BF). Excel добавляет её, когда вы сохраняете файл как «CSV UTF-8». Большинство парсеров её понимают, но некоторые считают частью названия первого столбца, так что если заголовок вроде name вдруг перестал совпадать, уберите BOM.
Можно ли отправить файл Excel в JSON-запросе?
Да. Закодируйте его в чистый Base64 и положите в поле с содержимым файла, которое описано в документации вашего API, вместе с именем файла и MIME-типом. Формат вывода JSON показывает структуру: name, type, size и data.