Форматы файлов

Общая ситуация с форматами файлов офисных пакетов

Форматы файлов и их неполная совместимость — это самая больная тема, связанная с офисными пакетами. Очень многие, если не большинство проблем пользователей выглядят примерно так: «Мне пришел тут файл, а он показывается неправильно! Что делать?»

Вначале разберемся с ситуацией.

Будем считать, что исторически первыми распространенными форматами документов Office были проприетарные форматы Microsoft: DOC для Word, XLS для Excel, PPT для PowerPoint (не будем углубляться в то, что было раньше). Для простоты будем называть их форматами Office 2003.

Форматы Office 2003 были не совсем удобны по нескольким причинам:

  • это — проприетарные форматы, защищенные патентами Microsoft. Соответственно, при создании своего приложения, которое использовало бы эти форматы, вполне могли возникнуть юридические проблемы;
  • сложность и слабая документированность этих форматов. В DOC и XLS предусмотрена своя файловая система, и каждая новая версия Office добавляла новые компоненты в формат, которые Microsoft документировать не спешила. Кроме того, в этом формате были реализованы явно неудачные решения, такие, как технология «Fast Save» из Office 2003, которая приводила к неконтролируемому распуханию файлов;
  • привязка к конкретным приложениям (то есть Word, Excel и PowerPoint): в DOC/XLS/PPT встречались прямые привязки к структурам соответствующих приложений Microsoft;
  • неполная обратная совместимость: если вы создали файл в Office 2003, то совершенно необязательно, что Office 97 его отобразит правильно. Поэтому как только на предприятии у части сотрудников появлялась новая версия Office, приходилось обновлять Office у всех остальных.

Фактически форматы XLS/DOC/PPT стали эффективным средством борьбы против конкурентов Microsoft Office.

Как ответ на проблему, компанией Sun Microsystems (которая владела OpenOffice) при поддержке консорциума OASIS (IBM, Novell, Oracle и другие) в начале 2000-х годов был разработан открытый стандарт OpenDocument (ODT/ODS/ODP и прочие форматы файлов). В 2006 году он был принят как стандарт ISO/IEC 26300, в 2010 году он был принят как стандарт ГОСТ Р ИСО/МЭК 26300—2010, а также был утвержден в качестве государственного стандарта несколькими десятками стран (включая весь Европейский Союз).

Формат OpenDocument оказался очень удачным по сравнению с Office 2003. Физически документ OpenDocument — это ZIP-архив, в котором лежат файлы XML и некоторые двоичные файлы (например, изображения). Структура проста, прозрачна и за счет ZIP-сжатия экономит много места на диске по сравнению с DOC/XLS/PPT.

Microsoft осознал происходящее и создал свой «аналог» OpenDocument — формат Office Open XML (сокращенно OOXML), который сейчас используется для DOCX, XLSX, PPTX и т. п. (с некоторыми оговорками, но о них ниже). Структурно формат оказался похожим на OpenDocument: файлы OOXML представляют из себя ZIP-архив, в который упакованы файлы XML и двоичные файлы.

А дальше Microsoft с большими скандалами и не с первого раза продвинул свой формат в виде стандарта ISO 29500:2008. При этом организация ISO пришлось наступить на горло собственным принципам, согласно которым не рекомендуется на одну и ту же сущность (в данном случае форматы офисных файлов) иметь два конкурирующих стандарта. Про прочие мелочи, такие, как наличие у Microsoft патентов США на форматы OOXML и возможность юридического преследования любой организации, которая, по мнению Microsoft, нарушит условия лицензионного соглашения, просто промолчим: политика есть политика.

Заметим также, что, вообще говоря, документы современных версий Microsoft Office не соответствуют собственному стандарту Microsoft OOXML. Microsoft поделила формат на две части: «strict» (строгий OOXML) и «transitional» (переходный). Переходный формат отличается тем, что в нем есть множество XML-тегов, которые не соответствуют стандарту (Microsoft объясняет, что они необходимы для обратной совместимости). Как работают с этим тегами приложения Microsoft Office — знает только Microsoft. Вы можете сохранить документ Office в строгом соответствии со стандартом ISO 29500 на OOXML, но для этого придется выбрать специальный формат файла (см. рис.)

Сохранение документа в формате strict OOXML

Как вы, наверное, догадываетесь, все приложения Microsoft Office по умолчанию сохраняют документы в нестандартном transitional формате, но формально DOCX/XLSX/PPTX стандартизированы.

Поддержка форматов файлов

Таким образом, в настоящее время на рынке фактически осталось три формата офисных документов:

  1. Исторический формат Office 97-2003 (DOC, XLS, PPT)
  2. Формат Open Document (ODT, ODS, ODP), поддерживаемый ISO, ГОСТ и государственными органами самых разных стран, включая Россию и Евросоюз
  3. Формат Office Open XML (DOCX, XLSX, PPTX), который формально стандартизирован, но реально приложения Microsoft сохраняют документы не в соответствии с разработанным ими же стандартом ISO.

Практически все офисные пакеты поддерживают сохранение документов во всех трех форматах. Но разница в том, какой формат является для офисного пакета родным (native). С файлом в родном формате по понятным причинам работа происходит намного быстрее и эффективнее. При открытии файла в неродном формате этот файл вначале переконвертируется в родной формат, а при сохранении происходит обратное действие, что требует дополнительного расхода ресурсов. Кроме того, в «неродных форматах» чаще всего поддерживается не весь функционал.

Форматы OpenDocument (ODT, ODS, ODP) являются родными только для LibreOffice/OpenOffice (из распространенных офисных пакетов). Соответственно, с документами по ГОСТ наиболее эффективно будет работать LibreOffice.

Для всех остальных распространенных офисных пакетов, которые здесь рассматриваются (Microsoft Office, WPS Office, OnlyOffice/Р7 Офис, Мой Офис) родными форматами являются форматы Office Open XML (DOCX, XLSX, PPTX). Сразу оговоримся, что реально для Microsoft Office родным является его внутренний двоичный формат (в Excel его можно увидеть, если сохранить книгу в формате XLSB), и этот формат наиболее эффективен, но про эти тонкости расскажем чуть позже.

Для Р7 Офис и Мой Офис, которые продвигаются по программе импортозамещения, выбор в качестве родного формата спорного майкрософтовского OOXML вместо ГОСТовского и технически более удачного и стандартизированного OpenDocument представляется достаточно спорным решением. Разработчики обосновывают это тем, что в организациях накоплен большой объем документов в форматах DOCX/XLSX, и для более быстрой работы с ними и был сделан такой выбор. Тут решать им, но рано или поздно отвязываться от форматов Microsoft, на мой взгляд, все-таки придется.