Когда речь идет об автоматизации бизнес‑процессов, существенная часть разговора неизменно будет касаться использования офисного пакета. Есть такой интернет‑мем: гигантская конструкция, названная «финансовая система мира», тремя четвертями своего веса опирается на небольшую подпорку, названную «Excel». И пока все вокруг не заполонили рои интеллектуальных агентов, табличный редактор остается основным инструментом человека для обработки и представления структурированной информации. Вероятно, когда корабль человеческих возможностей начнет тонуть в океане данных, именно разнообразные электронные таблицы последними покинут палубу.
Эксель, ворд — это уже имена нарицательные, подобно ксероксу (Xerox Corporation — это название компании, а то, что мы называем «ксерокс» — это копир, это все знают). Исходя из контекста, под ними понимают как приложения офисных пакетов (Microsoft Office, “МойОфис”, «Р7-Офис» и др.), так и отдельные файлы. В быту, в «быстрых» переговорах, когда нужно донести мысль, это удобно. Но в технических или юридических документах требуется точность, там нельзя таблицу обозвать «экселькой». Однако это не самая большая проблема.
Но вот представим, что поезд импортозамещения на предыдущей станции под названием «Экосистема Microsoft — ОС Windows» на долгое время не остановился и во всю мощность своих тяговых электродвигателей пронесся к станции «Вселенная Unix — ОС Linux»: семейство операционных систем Windows рано или поздно будет удалено с большинства российских компьютеров, следом в небытие отправится пакет Microsoft Office (поскольку без танцев с бубном под Linux он категорически не устанавливается, а в защищенной корпоративной среде даже этого бубна нет в наличии). Дойдет ли очередь до файлов — кто знает…
«А почему, собственно, до файлов должно быть кому‑то какое‑то дело?» — спросит скептически настроенный читатель. И вот это‑то и самое интересное.
До боли всем известные файлы с расширениями xlsx (xlsm), docx (docm) и pptx (pptm) частично базируются на серии форматов файлов для хранения электронных документов Office Open XML (OOXML). Но именно что «частично». В общих чертах эту историю можно изучить по ссылке. С той частью спецификации формата, которая открыта, можно ознакомиться здесь, но на свой страх и риск — там свыше 6,5 тыс. страниц. При этом надо помнить, что Microsoft не раскрыло «свою» часть спецификации. Таким образом, файлы OOXML — это если и не черный ящик, то совершенно точно не белый.
Более‑менее по монополии Microsoft “бьет” (в хорошем смысле) другой стандарт — OpenDocument Format (ODF), который «…был совместно и публично разработан различными организациями, доступен для всех и может быть использован без ограничений…», о нем можно почитать здесь. Спецификация формата: ссылка (тут с объемами дело обстоит попроще, «всего‑то» чуть больше 1 тыс. страниц). Этот формат уже несколько лет потихоньку пробирается в российские офисные системы и известен под масками файлов с расширениями ods, odt и odp. Да, в быту их еще называют по старому «экселями» и «вордами», а также «файлами МойОфис» или «файлами LibreOffice», хотя это файловые форматы, к приложениям жестко не привязанные.
«А нам‑то с этого какая печаль?» — спросит начинающий о чем‑то догадываться читатель. Все просто: у всех нас, у всей России есть Распоряжение Правительства РФ от 05.03.2022г. № 430-р, которым США отнесены к недружественным государствам. При этом не секрет, что компания Microsoft — это американская компания. А еще в России издан ГОСТ Р ИСО/МЭК 26300–2010, являющийся адаптацией версии 1.0 спецификации Open Document Format for Office Applications. Да, стандарт 2010 года, вступил в силу в 2011 году, охватывает версию 1.0 (текущая версия спецификации — 1.3, датируется 2021 годом), но уже что‑то, есть на что юридически опереться.
Если на одну чашу поместить частично закрытую спецификацию недружественной компании из недружественной страны, а на другую — полностью открытый формат, легализованный путем издания госстандарта, весы государственной информационной безопасности качнутся очевидно в какую сторону.
«Соль, соль‑то в чем?» — спросит нетерпеливый читатель. Казалось бы: ну не будет ОС Windows и Microsoft Office, взамен будет ОС на базе Linux и отечественный офисный пакет, возьми любой — умеет и с OOXML работать, и с ODF. Запретят первое — в моду войдет второе. Так в чем же дело? А все дело в автоматизации!
Не зря в самом начале был вспомнен мем про мировую финансовую систему и Excel. Если у всего остального мира особых проблем с Microsoft нет, то у России с недавних пор — выше крыши. Одним щелчком транслировать в другую экосистему всё, что автоматизаторы понаделали за последние пару‑тройку десятилетий, не получится. Грядет полноценная миграция с оформлением техзаданий и техпроектов, созданием команд и погонями за дедлайнами. Это как перенастраивать конвейер под выпуск новой модели автомобиля: одни расходы, прибыль видится где‑то за горизонтом. А в нашем случае даже модель не новая, старую бы суметь выпускать с тем же качеством…
В общем, профессиональный опыт осторожно просигнализировал о в некотором смысле неизбежном будущем без привычных и уже со многих сторон автоматизированных офисных приложений. Что мы сделали? Погрузились в репозиторий Python, изучили доступные модули, библиотеки, пакеты и фреймворки, связанные с разработкой ODF‑файлов. Другие языки программирования не исследовались. Изучение вопроса осуществлялось в ноябре 2025 года, поэтому если с тех пор где‑то что‑то годное «выстрелило» — это будет отличной новостью. Пока же, увы, все не очень хорошо. Настолько, что впору запасаться сердечными гликозидами. На всякий случай.
Что нам показалось важным в вопросах обработки табличных документов (файлов с расширением ods):
минимально приемлемая объектная модель (рабочая книга, рабочие листы, диапазоны, ячейки, диаграммы, формулы, последняя ячейка диапазона, стили) с сопутствующим набором методов (хотя бы уровня openpyxl);
чтение/запись данных;
чтение/запись параметров форматирования.
Какие инструменты обнаружились: pandas в связке с odfpy, собственно odfpy, pyexcel‑ods3 и плагин pyexcel‑odsr3, непосредственно pyexcel целиком, ezodf, odsgenerator, odsparsator, odfdo, tablib.
Что важно в обработке текстовых документов (файловое расширение odt):
своя объектная модель (документ, страницы, секции, абзацы, фрагменты (runs), стили, таблицы, диапазоны, ячейки) с соответствующими методами (целевой ориентир — python‑docx);
чтение/запись текстовых и табличных данных;
чтение/запись параметров форматирования и текста, и таблиц.
Что удалось найти: odfpy, odfdo, ezodf.
Тот случай, когда много — не значит хорошо. И даже, казалось бы, общие для табличных и текстовых документов odfpy, odfdo и ezodf полны сюрпризов и совершенно не спасают ситуацию: библиотеки редко обновляются (поддержка ezodf вообще прекращена с 2015 года); «рваный» функционал; мало примеров (odfpy, odfdo), причем некоторые не работают (как у odfdo); нет документации или она фрагментарная (присутствует только «быстрый старт» (quickstart)); нет своих объектов (в odfpy используется обход xml‑дерева; в pyexcel, odsgenerator и odsparsator — обычный питоновский словарь) или объектная модель недостаточна (odfdo).
Пожалуй, рабочей является только связка pandasи odfpy, позволяющая извлекать данные из ods‑файла и записывать фрейм данных обратно. При этом существует огромный пласт задач, требующих отформатированного вывода информации, который удобен человеческому глазу. Как известно, библиотека pandasдля этого не предназначена. Если автоматизированный процесс должен обеспечить подсветку одних значений зеленым, других — желтым, третьих — красным, то тут просто не с чем работать.
«И что тогда делать?» — спросит расстроенный читатель. Точного ответа нет. Наш вариант: если на вход автоматизированному процессу приходит ODF‑файл, то он с помощью одного из офисных приложений преобразуется в «рабочий» формат (xlsx/xlsm/docx), после чего обрабатывается с использованием pandas, openpyxl и python‑docx. Своего рода файловый адаптер‑конвертер. Но, конечно же, это не устраняет необходимость в инструменте для прямой работы с файлами ods и odt.
Таким образом, хотелось бы подсветить проблему автоматизации обработки ODF‑файлов в языке программирования Python с использованием открытого ПО и без задействования каких‑либо офисных приложений, а также обратить внимание на наш опыт: вполне вероятно, что весь путь исследования открытого ПО придется периодически повторять, пока не обнаружится что‑то приемлемое. Или же начать всерьез задумываться о разработке собственной библиотеки/модуля. Ну а что: тот же архив xml‑файлов, те же xml‑деревья, даже xml‑теги местами те же, да и спецификация у ODF выглядит попроще, чем у OOXML. А вот как перестать бояться и начать делать — это задача другой статьи.
Комментарии (10)

ru1z
19.08.2026 10:35Соль, соль‑то в чем
Соль в том, что рассказы про импонентозамещение офиса с распоряжениями от высоко сидящих лиц слышал ещё в 2008. Распоряжения с приказами есть, поэтому вспоминается история про Ксеркса приказавшего высечь
подневольных гражданморе.
Valerich_123 Автор
19.08.2026 10:35Да, вон и ГОСТ как приняли в 2010 году, так на этом пока тишина. Но тогда не было импортозамещения и февраля 2022 года. Предполагаю (это не прогноз, сам в неведении), когда в отношении Microsoft в высоких кабинетах кто-то сильно ударит кулаком по столу, в части офисных форматов все очень быстро может завертеться.

ru1z
19.08.2026 10:35Приняли и приняли, толку то. Назвали тот распил действительно по другому, суть одна. Дело не в резких событиях, а в том, что смысла нет, оттого и порка народу с немедленным принятием наверху.

economist75
19.08.2026 10:35Pandas содержит df.Styler() с почти полной Excel-расцветкой, усл. форматированием и барчартами в фоне ячеек. Да, там не все идеально, но из рендеров xlsx/ods это один из мощнейших и простых. Для сложного форматтинга есть pyuno с полным доступом к громадному api LibreOffice. Но туда лезут лишь отъявленные смельчаки (в основном зарубежные)

maximnik0q
19.08.2026 10:35Были и отечественные специалисты.Я помню 2 мощнейших плагина тогда ещё для Оpen (не либра) - один для таблицы учет-оборот запчастей.2 й конвертер odf в fb2 и epub .Написано нашими соотечественниками .В нашей компании спецы поматерились но тоже перенесли таблицы на odf .Так теперь сумели это совместить с программой оптического распознавания электросчётчиков,не нужно вручную вбивать данные .Но вообще такое впечатление складывается что народ ждёт что "падишах" умрет и не нужно будет учить осла говорить.Не хотят спецы переучиваться на linux :-(
Не хотят изучать btrfs,кластеризацию,sane вообще у них ужас и т д.Есть VNC с виндой и всё нормально.

Valerich_123 Автор
19.08.2026 10:35Аналитики данных в безопасности )). Жаль, в отношении текстовых документов нет ничего подобного, хотя бы уровня python-docx ((.

Granulex
19.08.2026 10:35Добавлю практический нюанс: боль миграции создаёт не закрытая часть OOXML, а то, что открытую часть каждый редактор читает по-своему. Один и тот же xlsx в "МойОфисе", "Р7" и LibreOffice раскладывается по-разному – плывёт вёрстка, отваливаются формулы с именованными диапазонами, съезжают сводные таблицы. И самый крепкий замок тут даже не формат-контейнер, а VBA-макросы: их не переносит корректно почти никто, и держат бухгалтерию на Excel именно они, а не тайная часть спецификации.
Shaman_RSHU
Cама постановка задачи автоматизировать генерацию/парсинг ODF-файлов с форматированием - это наследие эпохи Excel, от которого нужно уходить. Xlsx/ODS - это формат для визуального потребления человеком, а не для машинной автоматизации. Если бизнес-процесс требует закрасить ячейку в зеленый, если KPI > 100%, то в современной архитектуре это должно решаться не генерацией тяжелого XML-архива, а отдачей данных в BI-систему, дашборд или хотя бы генерацией HTML/PDF отчета.
Писать свой парсер ODF на lxml - это, конечно, героизм, но спецификация ODF (особенно в части наследования стилей и кэширования значений ячеек) — это минное поле. Если заказчик требует именно ODS с подсветкой, то на уровне архитектуры нужно «продавливать» требование: мы автоматизируем выгрузку данных в БД/API, а «красивый файл» пользователь формирует себе сам через шаблоны в своем «МойОфис» или LibreOffice. Иначе мы так и будем бесконечно перекладывать XML-теги из одного архива в другой, стоя на коврике из косточек.
Sarcasm: Поезд импортозамещения пронесся к станции Linux, а мы обнаружили, что забыли купить билеты в виде нормальных библиотек для Python :) Бизнесу на самом деле не нужен ODS. Бизнесу нужно, чтобы «циферки сошлись, а начальник увидел красное и зеленое». Наверняка уже где-то в недрах Минцифры пишется ТЗ на «Единый государственный формат табличных данных ... бла бла бла », который окажется еще страшнее, чем OOXML, а требовать его будут все.
Valerich_123 Автор
В программной роботизации, к которой имею отношение, пока еще небольшая часть роботов работает с другими роботами и системами, не требующими человеческих глаз. Но существенная часть обеспечивает автоматизацию бизнес-процессов, в начале и в конце которых стоит "живой" специалист. Поэтому без форматирования никуда. "Гулял" по процессу xlsx, теперь "гуляет" ods - для заказчика не должно ничего поменяться.