Файл XLSX — это не единый документ, а обычный ZIP-архив, внутри которого лежит набор текстовых файлов в формате XML. Если переименовать расширение с .xlsx на .zip, любой архиватор откроет его и покажет содержимое: таблицы, стили, настройки, связи между частями. Понимание этого устройства помогает решать практические задачи: восстанавливать повреждённые книги, извлекать данные без Excel, понимать, почему файл «весит» десятки мегабайт, и осознанно выбирать формат для обмена данными.
Главный практический вывод сразу: XLSX — это контейнер. Сам по себе он не «двоичный» и не закрытый: всё внутри читается текстовыми инструментами, а спецификация формата (Office Open XML, сокращённо OOXML) публична. Ниже разберём, что именно лежит внутри, за что отвечает каждая часть и как это знание применить.
- Почему XLSX — это архив
- Как заглянуть внутрь файла
- Структура архива: что где лежит
- Как хранятся данные ячеек
- Роли и связи: как части находят друг друга
- Что это даёт на практике
- Извлечение данных без Excel
- Диагностика тяжёлых файлов
- Восстановление повреждённых книг
- Автоматическая генерация документов
- XLSX против XLS и XLSM
- Безопасность: почему это важно знать
- Ограничения и типичные ошибки при работе «напрямую»
- Краткий алгоритм: что сделать, если нужно разобраться в конкретном файле
- Что запомнить
Почему XLSX — это архив
До 2007 года Excel использовал закрытый бинарный формат XLS, который нельзя было разобрать без специальных библиотек. С переходом на Office Open XML Microsoft перешла на открытую схему: документ собирается из стандартных XML-файлов, а ZIP используется как упаковка. Такой подход дал три заметных эффекта:
- файлы стали заметно меньше за счёт сжатия ZIP — XML хорошо сжимается, часто в 5–10 раз;
- повреждение одной части перестало разрушать весь документ: если испорчен, например, файл стилей, таблица с данными может остаться читаемой;
- сторонние программы получили возможность создавать и читать XLSX без лицензий Microsoft — так появились генераторы отчётов, конвертеры и библиотеки на любых языках программирования.
Тот же принцип действует для DOCX и PPTX — это архивы с похожей внутренней организацией. Различаются в основном набором частей внутри.
Как заглянуть внутрь файла
Способ зависит от операционной системы и не требует установки Excel.
- Скопируйте файл и у копии измените расширение с .xlsx на .zip. Оригинал не трогайте.
- Откройте полученный архив встроенными средствами системы или любым архиватором.
- Внутри вы увидите папки и XML-файлы. Их можно открывать любым текстовым редактором.
Обратная сборка тоже возможна: изменённые файлы упаковываются обратно в ZIP, расширение возвращается на .xlsx, и Excel открывает результат. Это рабочий приём для точечных правок, но с оговоркой: если нарушить структуру XML или связи между частями, программа откажется открывать файл или предложит восстановление. Перед экспериментами делайте копию.
Структура архива: что где лежит
Типичный XLSX выглядит так:
- [Content_Types].xml — описывает, какие типы контента присутствуют в пакете. Это «оглавление форматов»: по нему программа понимает, что, например, файл sheet1.xml — это лист таблицы.
- _rels/ — папка со связями (relationships). Файлы вида .rels описывают, какие части связаны между собой: какая часть является рабочей книгой, какие листы к ней относятся, где лежат стили.
- xl/workbook.xml — корневой файл рабочей книги: список листов, их порядок, активный лист, именованные диапазоны, определённые в книге.
- xl/worksheets/sheet1.xml, sheet2.xml… — сами листы. Здесь хранятся значения ячеек, формулы, объединения, ширины столбцов.
- xl/sharedStrings.xml — общий пул текстовых строк. Текст в ячейках не дублируется: в листе хранится только индекс строки из этого файла.
- xl/styles.xml — все форматы: шрифты, заливки, границы, числовые форматы, выравнивание. Ячейки ссылаются на стили по индексу.
- xl/theme/ — тема оформления: палитра цветов, шрифты темы.
- xl/calcChain.xml — порядок вычисления формул. Файл вспомогательный: Excel может его пересоздать, и его удаление обычно безопасно.
- docProps/ — метаданные документа: название, автор, даты создания и изменения, приложение, в котором файл создан.
- xl/media/ — изображения и другие внедрённые объекты, если они есть. Хранятся в исходных форматах: PNG, JPEG и т. п.
- xl/charts/, xl/drawings/, xl/tables/, xl/pivotTables/ — диаграммы, графические объекты, «умные таблицы», сводные таблицы — каждый тип объекта в своей подпапке.
Набор частей зависит от содержимого: в минимальной книге из одного пустого листа будет всего несколько файлов, а в отчёте с диаграммами и картинками — десятки.
Как хранятся данные ячеек
Лист в sheetN.xml — это последовательность элементов «строка», внутри которых лежат ячейки. Каждая ячейка имеет адрес (например, B7), атрибут типа и значение. Важные детали:
- Числа хранятся как есть, в текстовом виде внутри XML, с типом «number».
- Текст хранится по ссылке: в ячейке стоит индекс, а сама строка лежит в sharedStrings.xml. Это экономит место, когда одно слово повторяется в сотнях ячеек.
- Формулы хранятся вместе с последним вычисленным результатом. В ячейке присутствует и формула, и кэшированное значение. Поэтому программы, которые читают XLSX без движка вычислений, всё равно видят числа — но значения могут устареть, если файл редактировался сторонним инструментом, который не пересчитал формулы.
- Даты — это числа. Excel хранит дату как количество дней (и долей дня) от условной начальной точки, а «дату» её делает числовой формат из styles.xml. Отсюда частая проблема при выгрузках: дата превращается в число вроде 45000, если формат не перенёсся.
- Пустые ячейки обычно отсутствуют в XML вообще. Если в строке заполнены только A1 и F1, промежуточные ячейки не записываются. Это одна из причин, почему разреженные таблицы весят мало.
Роли и связи: как части находят друг друга
Механизм relationships — ключевая идея формата. Части не «знают» друг о друге напрямую: связи описаны в отдельных файлах .rels. Например, workbook.xml ссылается на листы не путями в коде, а через записи в _rels/workbook.xml.rels. Такой подход позволяет:
- перемещать и переименовывать части, не трогая основной код, — достаточно поправить связи;
- добавлять новые типы контента (диаграммы, изображения) без изменения формата листов;
- проверять целостность пакета: если связь указывает на несуществующую часть, файл считается повреждённым.
Файл [Content_Types].xml дополняет картину: он объявляет, какой обработчик соответствует каждому расширению или конкретной части. Эти два механизма вместе образуют «каркас», на котором держится весь документ.
Что это даёт на практике
Извлечение данных без Excel
Поскольку внутри текстовый XML, данные можно получить любым инструментом, который умеет работать с ZIP и XML: скрипты на Python, PowerShell, командные утилиты. Для регулярных выгрузок обычно используют готовые библиотеки, но разовое извлечение можно сделать вручную: распаковать архив, открыть нужный sheetN.xml и sharedStrings.xml, сопоставить индексы строк. Это удобно, когда Excel не установлен, а файл нужно просто прочитать.
Диагностика тяжёлых файлов
Если книга весит десятки мегабайт при небольшом количестве видимых данных, распаковка сразу показывает виновника. Типичные причины:
- огромный xl/media/ — внедрённые изображения в полном разрешении, часто одни и те же скопированы много раз;
- раздутый sharedStrings.xml — миллионы уникальных строк, например после выгрузки логов или вставки текста из внешних систем;
- листы с «призрачными» данными: форматирование или значения в сотнях тысяч строк, которых не видно на экране. Проверить можно, нажав Ctrl+End на листе — курсор прыгнет в последнюю реально используемую ячейку;
- множество версий, комментариев и сводных таблиц с собственными кэшами данных.
Лечение соответственно: сжать или удалить изображения, очистить неиспользуемые диапазоны, удалить лишние листы и кэши.
Восстановление повреждённых книг
Когда Excel сообщает, что файл повреждён, ZIP-структура даёт шанс на частичное спасение. Если архив открывается, посмотрите, какие части на месте. Часто листы с данными целы, а повреждены стили, тема или calcChain. Удалив или заменив испорченную часть и поправив связи, иногда удаётся получить данные. Это не гарантированный метод: при повреждении самого ZIP-контейнера или критичных связей восстановление потребует специализированных инструментов, а результат не обещается. Но как первый шаг перед платными утилитами ручная разборка бесплатна и часто информативна.
Автоматическая генерация документов
Понимание структуры объясняет, почему отчёты удобно собирать шаблонным способом: берётся готовый XLSX как шаблон, распаковывается, в XML подставляются значения, архив собирается обратно. Так работают многие генераторы документов. Тот же принцип лежит в основе почтовых рассылок с персонализированными вложениями и систем, формирующих счета и акты из данных учётных систем.
XLSX против XLS и XLSM
Семейство форматов Excel легко спутать, а различия между ними существенны для выбора.
| Формат | Устройство | Макросы | Когда уместен |
|---|---|---|---|
| XLSX | ZIP + XML (OOXML) | Не поддерживает | Обычные таблицы, отчёты, обмен данными |
| XLSM | Тот же ZIP + XML, плюс часть с макросами | Поддерживает | Книги с автоматизацией на VBA |
| XLSB | ZIP, но внутри бинарные части, а не XML | Поддерживает | Очень большие книги, где важны размер и скорость |
| XLS | Закрытый бинарный формат до 2007 года | Поддерживает | Совместимость со старыми программами |
Практическое правило: для обмена и хранения данных без макросов используйте XLSX — он читается максимальным числом программ, включая онлайн-редакторы и библиотеки. Макросы в XLSX не сохраняются: если сохранить книгу с VBA-кодом в этом формате, код будет потерян, о чём Excel предупреждает. XLSB быстрее и компактнее на больших объёмах, но хуже подходит для сторонней обработки, поскольку внутри не текст.
Безопасность: почему это важно знать
Архивная природа формата имеет и оборотную сторону. Вредоносные файлы маскируются под безобидные документы: внутри XLSX может лежать внедрённый объект, внешняя ссылка или макрос в XLSM, который запускается при открытии. Несколько разумных привычек:
- не отключайте защиту «Режим защищённого просмотра» и предупреждения о макросах без понимания последствий;
- файлы из почты и мессенджеров открывайте сначала в защищённом режиме;
- если файл XLSX неожиданно просит включить макросы — это повод насторожиться: в чистом XLSX макросов быть не может;
- антивирус проверяет содержимое контейнера, но не полагайтесь только на него при работе с файлами из ненадёжных источников.
Ограничения и типичные ошибки при работе «напрямую»
Ручная правка XML — инструмент точечный, и у него есть подводные камни:
- Индексы и связи легко сломать. Удалили строку из sharedStrings.xml — все ссылки на неё сместились, текст в ячейках «поплыл». Правки требуют аккуратности и понимания ссылочной модели.
- Кэшированные значения формул устаревают. Если изменить данные сторонним инструментом и не пересчитать формулы, Excel при открытии покажет старые результаты, пока не выполнит пересчёт.
- Сжатие и структура ZIP имеют значение. Некоторые программы чувствительны к тому, как собран архив: первый элемент [Content_Types].xml, отсутствие лишних записей. Не всякий ZIP-архиватор собирает пакет, который Excel примет без вопросов.
- Валидация XML не гарантирует валидность документа. Файл может быть синтаксически корректным XML, но нарушать схему OOXML — Excel откажется его открывать или «восстановит» с потерями.
Поэтому для систематической работы с форматом разумнее использовать проверенные библиотеки, которые учитывают эти нюансы, а ручную правку оставлять для разовых задач и диагностики.
Краткий алгоритм: что сделать, если нужно разобраться в конкретном файле
- Сделайте копию файла и переименуйте расширение в .zip.
- Откройте архив и посмотрите на состав: какие части присутствуют, какого они размера.
- Откройте docProps/app.xml — там видно, каким приложением и когда создан документ.
- Откройте xl/workbook.xml, чтобы увидеть список листов и их имена.
- Для данных откройте нужный sheetN.xml вместе с xl/sharedStrings.xml.
- Если файл подозрительно велик — отсортируйте содержимое архива по размеру и найдите самую тяжёлую часть.
- Если файл повреждён — определите, какие части отсутствуют или не читаются, и оцените, можно ли спасти листы с данными.
Что запомнить
XLSX — это ZIP-архив с XML-частями: листами, общим пулом строк, стилями, связями и метаданными. Из этого следуют три практических вывода. Во-первых, данные из XLSX можно извлекать и обрабатывать без Excel, а тяжёлые файлы — диагностировать по составу архива. Во-вторых, формат открыт и стандартизирован, поэтому для автоматизации стоит выбирать именно его, а не XLSB или XLS. В-третьих, ручная правка внутренних XML возможна, но требует аккуратности: связи между частями и кэши формул легко нарушить, поэтому любые эксперименты делайте на копиях. Если задача регулярная — используйте специализированные библиотеки для работы с OOXML, а внутреннее устройство формата держите в голове как карту, которая помогает понять, что происходит при сбоях и нестандартных файлах.
