Формат XLS (Excel 97–2003)
Книга .xls хранится как последовательность двоичных записей BIFF внутри составного файла OLE — того же контейнера, в котором лежит .doc, с теми же первыми байтами D0 CF 11 E0. Лист ограничен 65 536 строками и 256 столбцами до IV включительно. Наш конвертер такие книги не берёт: сервер отвечает кодом LEGACY_FORMAT_NOT_SUPPORTED и просит сохранить файл как .xlsx.
Коротко о цифрах
- Сетка листа
- 65 536 строк × 256 столбцов, последний — IV
- Первые байты
- D0 CF 11 E0 A1 B1 1A E1 — те же, что у .doc и .ppt
- Ответ сервера
- 400 и LEGACY_FORMAT_NOT_SUPPORTED, до конвертации
- Что принимается
- только .xlsx; .xlsb и .csv в список не входят
- Внутреннее устройство
- записи BIFF в составном файле OLE, не текст
Потолок в 65 536 строк — это не мелочь
Ограничение сетки — главная практическая разница между XLS и XLSX. Выгрузка из учётной системы на сто тысяч строк в старый формат просто не помещается, и при сохранении Excel предупреждает, что данные будут усечены. Столбцов тоже всего 256: таблица с посуточной разбивкой за год в XLS не влезает по ширине.
Вторая разница — в способе чтения. XLSX разбирается любой библиотекой как ZIP с XML, а XLS требует разбора двоичных записей с указателями. Поэтому онлайн-сервисы и серверные конвейеры массово отказались от него: возни много, а поведение на краевых файлах непредсказуемое.
Что происходит при попытке загрузки
- Окно выбора файла .xls пропускает: в списке типов конвертера есть application/vnd.ms-excel.
- Файл уходит на сервер, но конвертация не начинается — проверка на .doc, .xls и .ppt стоит раньше всего остального.
- Возвращается статус 400 и код LEGACY_FORMAT_NOT_SUPPORTED, а на экране — просьба сохранить как .xlsx.
- Формат .xlsb, двоичный вариант новой книги, тоже не принимается: в списке разрешённых расширений маршрута его нет.
- Файл .csv отклоняется по другой причине — как неподдерживаемый тип, потому что маршруту разрешены только .xlsx и .xls.
Как пересохранить книгу
- Откройте .xls в Excel и выберите «Файл» → «Сохранить как» → «Книга Excel (*.xlsx)».
- В LibreOffice Calc это «Файл» → «Сохранить как» → «Excel 2007-365 (.xlsx)» с подтверждением формата.
- Проверьте макросы: код VBA в обычный .xlsx не сохраняется, для него нужен .xlsm — но в PDF он всё равно не попадёт.
- Просмотрите условное форматирование и диаграммы: они переносятся, но легенды и подписи иногда смещаются.
- Загрузите готовый .xlsx в конвертер Excel → PDF и выберите ориентацию.
Частые вопросы
Влезут ли все данные при пересохранении из XLSX в XLS?
Не всегда: старый формат держит 65 536 строк и 256 столбцов. Всё, что не помещается, при сохранении отсекается, и Excel показывает предупреждение. Обратный переход, из XLS в XLSX, проходит без потерь по объёму.
Почему у .xls и .doc одинаковые первые байты?
Оба лежат в контейнере составного документа OLE — это общая оболочка для нескольких старых форматов Microsoft. Различает их не сигнатура, а внутренние потоки, поэтому на практике тип определяется по расширению.
Можно ли загрузить .xls, если переименовать его в .xlsx?
Нет. Сервер проверяет первые четыре байта на сигнатуру ZIP, а у двоичной книги их нет. Вы получите сообщение о том, что содержимое не совпадает с расширением, и конвертация не начнётся.
Что делать с макросами при переходе на новый формат?
Сохраняйте книгу как .xlsm, если код нужно оставить рабочим: обычный .xlsx макросы не хранит. Для печати в PDF это не важно — выполняться там нечему, в документ попадает только результат.