SpreadsheetML
SpreadsheetML — это формат файлов, основанный на языке разметки XML (Extensible Markup Language), предназначенный для хранения и обмена электронными таблицами. Он является частью более широкого семейства форматов Office Open XML (OOXML), стандартизированного международным консорциумом Ecma International (ECMA-376) и Международной организацией по стандартизации (ISO/IEC 29500). SpreadsheetML обеспечивает структурированное описание данных, формул, форматирования, диаграмм и других элементов электронных таблиц, что позволяет различным приложениям, в первую очередь пакету Microsoft Office (начиная с версии 2007), создавать, редактировать и обмениваться файлами без потери информации. В отличие от бинарного формата XLS, SpreadsheetML основан на открытом текстовом представлении, что упрощает его обработку сторонними программами и интеграцию с другими системами.
История
Предпосылки создания
До появления SpreadsheetML основным форматом для электронных таблиц Microsoft Excel был бинарный формат XLS (Binary Interchange File Format). Он был закрытым, документированным лишь частично и зависел от конкретной версии приложения. Это создавало проблемы при обмене данными между разными версиями Excel, а также с другими программами, такими как OpenOffice.org Calc или LibreOffice Calc. Кроме того, бинарный формат был уязвим для повреждений и сложен для автоматизированной обработки.
Разработка и стандартизация
В 2000 году Microsoft начала работу над новым форматом, основанным на XML, который должен был стать основой для пакета Office 2003. Первая версия, получившая название XML Spreadsheet (часто обозначаемая как XMLSS), была представлена как экспериментальный формат в Excel 2002 (Office XP) и официально включена в Excel 2003. Однако этот формат не был полностью стандартизирован и имел ограниченную поддержку.
В 2005 году Microsoft передала спецификации нового формата, названного Office Open XML, в консорциум Ecma International. Работа над стандартом велась в техническом комитете TC45. В декабре 2006 года Ecma утвердила стандарт ECMA-376, который включал в себя спецификации SpreadsheetML, WordprocessingML (для текстовых документов) и PresentationML (для презентаций). В 2008 году стандарт был принят ISO/IEC как ISO/IEC 29500:2008, после чего он стал международным стандартом для офисных документов.
Принятие и распространение
Начиная с Microsoft Office 2007, формат XLSX (основанный на SpreadsheetML) стал форматом по умолчанию для сохранения файлов Excel. Это привело к значительному снижению использования бинарного XLS. В 2010-х годах формат был принят большинством крупных офисных пакетов, включая LibreOffice, Apache OpenOffice, Google Sheets (через экспорт) и Apple Numbers. Однако из-за сложности спецификации и наличия множества необязательных функций, реализация полной поддержки SpreadsheetML в сторонних приложениях остаётся нетривиальной задачей.
Структура и устройство
Архитектура OPC
Файл в формате SpreadsheetML (например, с расширением .xlsx) представляет собой ZIP-архив, организованный по принципу Open Packaging Conventions (OPC). Внутри архива находятся XML-файлы, папки и ресурсы (изображения, аудио). Основные компоненты архива:
- [Content_Types].xml — файл, описывающий типы содержимого всех частей архива (например, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml).
- _rels/.rels — файл связей (relationships), определяющий взаимосвязи между частями архива (например, связь между главным файлом книги и листами).
- xl/workbook.xml — главный файл книги, содержащий метаданные: список листов, их имена, порядок отображения, а также ссылки на файлы листов.
- xl/worksheets/sheet1.xml — файл, описывающий содержимое отдельного листа (ячейки, строки, столбцы, формулы, форматирование).
- xl/styles.xml — файл, содержащий определения стилей, шрифтов, заливок, границ и числовых форматов.
- xl/sharedStrings.xml — файл, содержащий все текстовые строки, используемые в книге. Это позволяет избежать дублирования строк и уменьшить размер файла.
- xl/theme/theme1.xml — файл, описывающий тему оформления (цвета, шрифты, эффекты).
- docProps/app.xml и docProps/core.xml — файлы, содержащие метаданные документа (автор, дата создания, количество листов и т.д.).
Основные элементы SpreadsheetML
- Workbook (Книга) — корневой элемент, содержащий ссылки на листы, определения имён, параметры вычислений и настройки окна.
- Worksheet (Лист) — основной контейнер для данных. Содержит элементы
<sheetData>,<cols>,<rows>,<mergeCells>,<conditionalFormatting>и другие. - SheetData (Данные листа) — элемент, содержащий все строки (
<row>) и ячейки (<c>). Каждая ячейка имеет атрибуты:r(адрес, например, A1),t(тип данных:s— строка,n— число,b— логическое,e— ошибка,str— формула),s(индекс стиля). - Cell (Ячейка) — элемент, содержащий значение (
<v>) или формулу (<f>). Формулы записываются в виде строки, например,=SUM(A1:A10). - SharedStrings (Общие строки) — элемент, содержащий массив строк. Каждая строка имеет уникальный индекс, на который ссылаются ячейки.
- Styles (Стили) — определяет форматирование: шрифты, заливки, границы, числовые форматы, выравнивание. Стили могут быть применены к ячейкам, строкам или столбцам.
- PivotTable (Сводная таблица) — отдельный XML-файл, описывающий структуру и параметры сводной таблицы.
- Charts (Диаграммы) — отдельные XML-файлы, содержащие описание диаграмм (тип, оси, ряды данных, легенда).
Классификация и версии
Версии стандарта
- ECMA-376 1st Edition (2006) — первая версия стандарта, включавшая переходные (transitional) и строгие (strict) схемы. Переходная схема была обратно совместима с Excel 2003.
- ISO/IEC 29500:2008 — международный стандарт, принятый в 2008 году. Включает четыре части: Fundamentals, Open Packaging Conventions, Markup Compatibility and Extensibility, и Transitional Migration Features.
- ECMA-376 2nd Edition (2008) — исправленная версия, учитывающая замечания ISO.
- ECMA-376 3rd Edition (2011) — добавлена поддержка новых функций, таких как слайсеры (slicers) и временные шкалы (timelines).
- ECMA-376 4th Edition (2012) — включены расширения для работы с большими данными и облачными сервисами.
- ECMA-376 5th Edition (2016) — добавлена поддержка динамических массивов и новых функций Excel.
- ECMA-376 6th Edition (2021) — обновление для поддержки новых возможностей Office 2021 и Microsoft 365.
Типы файлов
- .xlsx — основной формат для электронных таблиц.
- .xlsm — формат, поддерживающий макросы (VBA-код).
- .xltx — шаблон книги.
- .xltm — шаблон книги с поддержкой макросов.
- .xlam — надстройка Excel.
Применение
В офисных пакетах
SpreadsheetML является основным форматом для Microsoft Excel, начиная с версии 2007. Он также поддерживается большинством других офисных приложений:
- LibreOffice Calc — полная поддержка, включая импорт и экспорт.
- Apache OpenOffice Calc — поддержка, но с некоторыми ограничениями (например, неполная поддержка сводных таблиц).
- Google Sheets — может импортировать и экспортировать файлы XLSX, но с возможной потерей сложного форматирования.
- Apple Numbers — поддерживает импорт, но экспорт в XLSX может быть неполным.
В программировании и автоматизации
Благодаря открытому текстовому формату, SpreadsheetML широко используется для автоматизированной обработки данных:
- Библиотеки и инструменты: Python (openpyxl, xlsxwriter), Java (Apache POI), .NET (DocumentFormat.OpenXml), PHP (PhpSpreadsheet).
- Сценарии использования: генерация отчётов, импорт/экспорт данных из баз данных, создание финансовых моделей, обработка больших массивов данных.
- Интеграция с веб-сервисами: многие REST API позволяют напрямую загружать и скачивать файлы в формате XLSX.
В научных и инженерных расчётах
SpreadsheetML используется для хранения результатов экспериментов, расчётов и моделирования. Благодаря поддержке формул и макросов, он позволяет создавать сложные вычислительные модели.
Критика и ограничения
Сложность и размер
Спецификация SpreadsheetML является одной из самых объёмных среди стандартов OOXML (более 6000 страниц). Это затрудняет полную реализацию поддержки формата в сторонних приложениях. Кроме того, ZIP-архив с множеством XML-файлов может быть значительно больше по размеру, чем эквивалентный бинарный файл XLS, особенно при наличии большого количества повторяющихся данных.
Обратная совместимость
Несмотря на стандартизацию, существуют проблемы с обратной совместимостью. Файлы, созданные в более новых версиях Excel, могут содержать функции, не поддерживаемые в старых версиях или в других приложениях (например, динамические массивы, новые типы диаграмм, слайсеры). Это может приводить к потере данных или некорректному отображению при открытии в LibreOffice Calc или Google Sheets.
Зависимость от Microsoft
Хотя формат является открытым, его разработка и развитие контролируются корпорацией Microsoft. Критики отмечают, что новые версии стандарта часто включают функции, специфичные для Excel, что затрудняет конкуренцию для других офисных пакетов. Кроме того, некоторые элементы, такие как макросы VBA, не являются частью стандарта и не поддерживаются в других приложениях.
Альтернативные форматы
Существуют альтернативные открытые форматы для электронных таблиц:
- OpenDocument Format (ODF) — стандарт ISO/IEC 26300, используемый в LibreOffice и Apache OpenOffice. Он менее сложен, но имеет меньшую поддержку в коммерческих приложениях.
- CSV (Comma-Separated Values) — простой текстовый формат, не поддерживающий форматирование, формулы и макросы.
- HTML-таблицы — могут быть использованы для отображения данных, но не поддерживают вычисления.
Интересные факты
- Формат XLSX (SpreadsheetML) поддерживает до 1 048 576 строк и 16 384 столбцов на лист (Excel 2007 и новее).
- Внутренняя структура файла XLSX может быть распакована и прочитана как обычный ZIP-архив, что позволяет вручную редактировать XML-файлы.
- Некоторые программы, такие как Microsoft Excel, используют расширения, не входящие в стандарт, например, для поддержки макросов VBA, что делает файлы XLSM не полностью совместимыми с другими приложениями.
- В 2010 году Европейская комиссия приняла решение о поддержке OOXML (включая SpreadsheetML) как стандарта для обмена документами в государственных учреждениях, наряду с ODF.
Источники
- ECMA-376: Office Open XML File Formats — 6th Edition (2021)
- ISO/IEC 29500-1:2016 — Information technology — Document description and processing languages — Office Open XML File Formats
- Microsoft Docs: Office Open XML (OOXML) Overview
- Open XML SDK for Office — документация по работе с форматом
- Статья «Office Open XML» в Википедии
- «Open XML: The Standard That Wasn't» — анализ критики формата
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →