Как декодировать Base64 в файл Excel
- Вставьте Base64 в поле Base64 или data URI. Префикс вроде
data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,можно не убирать. Длинную выгрузку, сохранённую как текст, откройте кнопкой Открыть файл .txt. - Над таблицей появится строка с названием листа: «Первый лист: „Invoices“ (всего в книге: 3)». Сверху у таблицы буквы столбцов, сбоку собственные номера строк листа: строка 17 здесь будет строкой 17 и в Excel, даже если строки перед ней пустые.
- Под таблицей список элементов показывает все части книги с кнопками Открыть и Сохранить.
- Нажмите Скачать файл, чтобы сохранить .xlsx.
Чтобы прочитать лист, не нужен ни Excel, ни надстройки. Страница распаковывает книгу и разбирает её XML прямо в браузере, а политика безопасности контента (CSP) блокирует все сетевые запросы, кроме счётчика просмотров Cloudflare, так что данные остаются на вашем устройстве.
Как превью показывает значения ячеек
Таблица показывает то, что хранится в каждой ячейке, без числовых форматов Excel. При проверке выгрузки обычно это и нужно, но некоторые ячейки выглядят не так, как в Excel:
| Ячейка в Excel | В превью |
|---|---|
| Текст | Тот же текст |
25%, $1,234.50 | Хранимое число: 0.25, 1234.5 |
15/01/2025 | Порядковый номер даты: 45672 |
12:00 | Доля суток: 0.5 |
=C2*2, показывающая 241 | 241, результат, сохранённый в файле |
TRUE, FALSE | TRUE, FALSE |
#DIV/0! | #DIV/0! |
| Объединённые ячейки | Только значение левой верхней ячейки |
Чтобы превратить порядковый номер в дату, прибавьте столько дней к 30 декабря 1899 года: datetime(1899, 12, 30) + timedelta(days=45672) даёт 15 января 2025 года. Книги с системой дат 1904 (настройка из старых версий Excel для Mac) считают дни от 1 января 1904 года.
Результаты формул видны, только если их сохранила программа, записавшая файл. Excel и LibreOffice сохраняют; некоторые библиотеки пишут формулы без результатов, и такие ячейки выглядят пустыми.
У превью есть ограничения: оно читает первый лист в порядке книги (самую левую вкладку, даже если она скрыта или активной была другая), до 200 строк и 30 столбцов (от A до AD). Если данных больше, появляется подсказка «Показано не больше 200 строк × 30 столбцов.» Диаграммы, изображения, примечания и оформление не показываются.
XLSX, XLS, CSV или что-то другое
| Base64 начинается с | Файл | Что делать |
|---|---|---|
UEsDB | XLSX или другой файл на основе ZIP | Превью работает для XLSX и XLSM |
0M8R4KGxGuE | Старый .xls (Excel 97–2003) или .xlsx с паролем | Инструмент сообщает «Не похоже на XLSX» и определяет DOC/XLS/MSG (OLE). Различить их он не может, и в поле Расширение остаётся xlsx: для старой книги впишите xls, для защищённой оставьте xlsx |
77u/ | Текст с меткой порядка байтов UTF-8, обычно выгрузка CSV | См. Base64 в CSV |
PD94bWwg | XML (<?xml ), возможно, таблица Excel 2003 XML | Сохраните с расширением xml, Excel его откроет |
Два варианта на основе ZIP требуют внимания. Книга с макросами содержит xl/vbaProject.bin; превью работает как обычно, но с расширением .xlsx Excel её не откроет, поэтому перед скачиванием впишите xlsm. Двоичная книга (.xlsb) хранит листы в файлах .bin, а не в XML: инструмент всё равно называет её XLSX и показывает список элементов, но таблицы не будет, и сохранять её нужно как xlsb.
Если вместо книги прислали CSV, появится сообщение «Похоже на CSV, а не на XLSX.» с кнопкой Скачать как .csv. Excel откроет любой из этих файлов.
Откуда берутся таблицы в Base64
API отчётности и бухгалтерии возвращают сгенерированные выгрузки полем Base64 в JSON. Платформы автоматизации и low-code часто передают файлы между шагами в виде строк Base64, а письма несут вложения с таблицами как MIME-части в Base64. Для обратной задачи, из книги в строку, используйте Excel в Base64.
Как прочитать книгу из Base64 в Python
С пакетом openpyxl книгу можно прочитать прямо из декодированных байтов:
import base64, io
from openpyxl import load_workbook
with open("export.b64") as f:
raw = base64.b64decode(f.read())
wb = load_workbook(io.BytesIO(raw), data_only=True)
ws = wb.worksheets[0]
for row in ws.iter_rows(values_only=True):
print(row)
data_only=True возвращает сохранённые результаты формул вместо самих формул, то есть те же значения, что показывает превью. В отличие от превью, openpyxl применяет к датам числовые форматы, так что ячейка из примера выше вернётся как datetime(2025, 1, 15, 0, 0). Другие варианты декодирования описаны в статье Base64 в Python.
Вопросы и ответы
Как превратить Base64 в файл Excel?
Вставьте строку в поле выше и нажмите Скачать файл. Книга сохранится как decoded.xlsx ровно с теми байтами, что были закодированы, так что формулы, оформление и все листы останутся на месте.
Почему даты показаны числами вроде 45672?
Excel хранит дату как число дней с 30 декабря 1899 года и только на экране форматирует его как дату. Превью показывает хранимое значение: 45672 соответствует 15 января 2025 года, и при открытии файла Excel снова покажет его датой.
Можно ли посмотреть другие листы?
Таблица показывает только первый лист. Остальные перечислены как xl/worksheets/sheet2.xml и так далее; кнопка Открыть показывает их исходный XML, где текстовые ячейки хранят номера, ссылающиеся на xl/sharedStrings.xml.
Excel пишет, что формат или расширение файла недопустимы. Почему?
Расширение не соответствует содержимому. Книгу с макросами (в ней есть xl/vbaProject.bin) нужно сохранять как .xlsm, а старой книге, определённой как OLE, нужно .xls; впишите правильное расширение в поле Расширение и скачайте файл ещё раз.