Формат XLSX¶
XLSX — файловый формат электронных таблиц, основанный на стандарте Office Open XML (ISO/IEC 29500), введённом корпорацией Microsoft в 2007 году в составе пакета Microsoft Office 2007. Расширение .xlsx используется для книг Excel, сохранённых в формате XML-документов, упакованных в ZIP-архив. Формат заменил бинарный формат .xls (Compound File Binary Format), применявшееся в Excel с 1993 года, и стал одним из основных стандартов хранения табличных данных в информационных системах.
¶История
До 2007 года Microsoft Excel использовал проприетарный бинарный формат .xls, основанный на структуре Compound File Binary Format (так называемый «формат OLE2»). Файл представлял собой бинарный поток с внутренней файловой системой, что затрудняло чтение данных сторонними программами и делало формат уязвимым для повреждений.
В 2006 году консорциум Ecma International опубликовал стандарт Office Open XML (OOXML) как открытый формат для документов Microsoft Office. В 2008 году стандарт был принят Международной организацией по стандартизации (ISO) под номером ISO/IEC 29500. Формат .xlsx стал основным форматом сохранения книг Excel начиная с версии 2007 года. Позже Microsoft выпустила спецификацию MS-XLSX, описывающую внутреннюю структуру формата.
¶Устройство файла
Файл .xlsx представляет собой ZIP-архив (сжатие методом deflate), содержащий набор XML-документов и служебных файлов. Структура архива стандартизирована и имеет следующий вид:
| Элемент | Назначение |
|---|---|
[Content_Types].xml | Описывает типы всех файлов внутри архива |
_rels/.rels | Корневые связи между элементами |
xl/workbook.xml | Список листов книги и свойства |
xl/worksheets/sheet1.xml | Данные отдельных листов |
xl/sharedStrings.xml | Общая таблица строковых значений |
xl/styles.xml | Форматирование ячеек, шрифты, заливки |
xl/theme/theme1.xml | Тема оформления |
docProps/core.xml, docProps/app.xml | Метаданные документа (автор, дата изменения) |
Данные ячеек хранятся в XML-узлах <c> внутри элементов <row> и <sheetData>. Значения ячеек могут быть числовыми, строковыми, логическими, ошибочными или формулами. Строковые значения часто выносятся в sharedStrings.xml и связываются с ячейками по индексу, что уменьшает размер файла при повторяющихся данных.
¶Классификация форматов OOXML
| Расширение | Описание |
|---|---|
.xlsx | Обычная книга Excel без поддержки макросов |
.xlsm | Книга с поддержкой макросов VBA |
.xlsb | Бинарный формат OOXML для больших книг |
.xltx, .xltm | Шаблоны книг |
Все перечисленные форматы используют ZIP-контейнер и XML-представление данных, но различаются набором разрешённых элементов и типами содержимого.
¶Совместимость и поддержка
Формат .xlsx поддерживается большинством табличных редакторов: LibreOffice Calc, Google Таблицы, Apple Numbers, WPS Office, OpenOffice Calc. Библиотеки для работы с форматом существуют для многих языков программирования — например, openpyxl и pandas (Python), Apache POI (Java), EPPlus и NPOI (.NET), xlsxwriter (Python).
В России формат XLSX активно используется в бухгалтерских системах, включая продукты «1С:Предприятие», где табличные выгрузки в этот формат применяются для обмена данными с ФНС, банками и контрагентами.
¶Ограничения
Несмотря на открытость стандарта, спецификация OOXML содержит ряд спорных моментов, связанных с совместимостью с продуктами Microsoft. К ограничениям формата также относятся:
- ограничение на 1 048 576 строк и 16 384 столбцов на лист;
- ограничение на 255 символов в имени листа;
- потенциальное увеличение размера файла при работе с большими объёмами данных (в отличие от бинарного
.xlsb); - риск внедрения вредоносного кода через макросы (решается отключением макросов и использованием
.xlsxвместо.xlsm).
¶Применение
Формат XLSX применяется для хранения и обмена табличными данными, построения отчётов, ведения баз данных небольшого объёма, а также как промежуточный формат при импорте и экспорте данных в информационных системах. Многие государственные и корпоративные системы принимают отчётность именно в формате XLSX.
¶Источники
- ISO/IEC 29500: Office Open XML File Formats
- Microsoft Office Open XML File Formats documentation (MS-XLSX)
- Ecma International, Standard ECMA-376
- Документация библиотек openpyxl и Apache POI
