Что собой представляет формат хранения данных microsoft word
В таблице ниже перечислены различные виды документов, которые можно сохранять в приложении Word.
Формат файла
Документ Word (DOCX).
Используемый по умолчанию XML-формат документов Word 2008 для Mac, Word для Mac 2011, Word 2016 для Windows, Word 2007 для Windows, Word 2010 для Windows, Word 2013 для Windows и Word 2016 для Windows.
Документ Word 97–2004 (DOC)
Формат документов, совместимый с версиями от Word 98 до Word 2004 для Mac и от Word 97 до Word 2003 для Windows.
Шаблон Word (DOTX).
Сохранение документа в виде XML-шаблона, на базе которого можно создавать новые документы. Сохранение содержимого документа и его параметров, в том числе стилей, разметки страниц, элементов автотекста, пользовательских сочетаний клавиш и меню.
Шаблон Word 97–2004 (DOT)
Сохранение документа в виде шаблона, на основе которого можно создавать новые документы. Сохранение содержимого документа и его параметров, в том числе стилей, разметки страниц, элементов автотекста, пользовательских сочетаний клавиш и меню. Совместим с версиями Word 97–2003 для Windows и Word 98–2004 для Mac.
Экспорт содержимого и форматирования документа в формате, распознаваемом и читаемом другими приложениями, включая совместимые программы Майкрософт.
Обычный текст (TXT)
Экспорт содержимого документа в текстовый файл и сохранение текста без форматирования. Этот формат следует выбирать лишь в том случае, если целевая программа не способна читать файлы других доступных форматов. В этом формате используется расширенный набор символов ASCII для Mac.
Сохранение документа в формате, предназначенном для просмотра в Интернете. HTML — это стандартный веб-формат, который отображается в браузерах Macintosh и Windows.
Экспорт документа в PDF-файл, который выглядит одинаково на компьютерах Macintosh и Windows.
Документ Word с поддержкой макросов (DOCM)
Формат документов на основе XML, в котором сохраняется код макросов VBA. Макросы VBA выполняются в Word 2016 для Mac и Word для Mac 2011, но не в Word 2008.
Шаблон Word с поддержкой макросов (DOTM)
Сохранение документа в виде XML-шаблона с кодом макросов VBA. Макросы VBA выполняются в Word 2016 для Mac и Word для Mac 2011, но не в Word 2008.
XML-документ Word (XML)
Экспорт содержимого документа в XML-файл. Преобразование всех инструкций форматирования и текста в формат XML. Совместим с Word 2007 для Windows.
XML-документ Word 2003 (XML)
Экспорт содержимого документа в XML-файл. Преобразование всех инструкций форматирования и текста в формат XML. Совместим с Word 2003 для Windows.
Веб-страница в одном файле (MHT)
Сохранение документа в формате, предназначенном для просмотра в Интернете, с созданием единого файла со всеми элементами страницы, такими как графические объекты. Используется интернет-стандарт MIME HTML.
Шаблон документа Word (DOC)
Сохранение документа с пометкой "Шаблон" для системы поиска. При открытии такого файла будет открываться новый документ без названия.
Настраиваемый словарь (DIC)
Сохранение содержимого документа в качестве файла словаря, предназначенного для хранения слов и терминов, которые не входят в основной словарь.
Словарь исключений (DIC)
Сохранение содержимого документа в качестве файла словаря, предназначенного для хранения предпочтительных вариантов правильно написанных слов. Выбирайте этот вариант, если нужно сохранить в словаре исключений слово наподобие "нуль", чтобы приложение Word не помечало его как неправильно написанное.
Совместимый с Word 4.0–6.0/95 (RTF)
Этот формат RTF совместим с версиями от Word 4.0 до Word 6.0 для Mac, а также с Word 6.0 и Word 95 для Windows.
Тема Office (THMX)
Сохранение шрифта, цветовой схемы и фона файла для использования в качестве новой темы.
Чтобы применить к документу тему из другого документа, на вкладке Главная в разделе Темы выберите команду Обзор тем. Чтобы сохранить измененную тему как новую, на вкладке Главная в разделе Темы выберите команду Сохранить тему.
Всем привет!
Этой статьей мы открываем цикл, посвященный исследованию безопасности компонентов Microsoft Office. Речь в материале пойдет о форматах данных, шифровании и получении символов.
Когда в компании Microsoft задумывался и разрабатывался масштабный пакет офисных программ Microsoft Office, вероятно, создатели надеялись на успех. Сложно сказать, могли ли они рассчитывать на его триумфальное шествие по миру впоследствии, на то, что продукт станет фактическим стандартом, а существование его растянется на десятилетия. Однако можно уверенно утверждать, что массивность приложений, количество человеко-часов, затраченных на создание, развитие, поддержку обратной совместимости компонентов продукта способствовали появлению «тяжелого наследия» в виде устаревшего, написанного десятилетия назад программного кода, составляющего ядро приложений даже в последних версиях пакета. Требования, которые предъявлялись к коду двадцать лет назад, изменились. Сегодня во главу угла ставится кроссплатформенность, масштабируемость и безопасность. При этом, расходы на значительные изменения в продукте таковы, что Microsoft предпочитает подход «не сломано – не трогай», и старательно обеспечивает обратную совместимость с самыми древними форматами документов. Не обходится и без определенного давления со стороны коммерческих и государственных структур, которые также медленно и неохотно обновляют свои технологические парки, предпочитая привычные средства в ущерб развитию и безопасности.
Покопавшись в дебрях обработчиков файлов Microsoft Office, мы готовы представить вам это небольшое исследование.
Component Object Model и хранение данных
Так может выглядеть использование приложением-контейнером разнородных компонетов независимо от их местоположения
На практике обычно подразумевается не столько сам стандарт, сколько его реализация в ОС семейства Windows. Первые версии COM были разработаны еще для 16-разрядных Windows в качестве основания для OLE (оно же теперь ActiveX). Изначальной целью разработки этих подсистем была возможность создания (!) составных документов Word и Excel для Windows 3.x, и они были выпущено на свет около 1991 года (в разных источниках даты расходятся).
Работая с приложением, пользователь изменяет изображение, содержимое окна браузера и строки в полях ввода. Само приложение взаимодействует с компонентами, вызывая их методы и устанавливая их свойства, иными словами, изменяя внутреннее состояние объектов, о внутреннем устройстве которых не имеет представления.
В один прекрасный момент пользователь решает сохранить проделанную работу и нажимает кнопку «Save». Перед нашим приложением стоит грандиозная задача — записать на диск набор данных в совершенно разных форматах, о большей части которых (и данных, и форматов) приложению ничего не известно, да и находятся они для него в недосягаемости! Именно для решения этой задачи специалисты Microsoft и разработали одновременно с COM и «родной» для Component Object Model формат файла Compound File Binary Format, а вместе с ним систему интерфейсов для взаимодействия с этим форматом и их реализаций, объединяемых под именем Structured Storage.
Структурированное Хранилище COM
Для универсального доступа приложений и компонентов к сложному, к тому же закрытому, формату CFBF, для прозрачной как для контейнера, так и для компонентов замены одного формата другим, были разработаны библиотечные интерфейсы IStorage и IStream и соответствующие API. Виртуальная структура данных, к которой получает доступ приложение посредством этих интерфейсов, представлена системой вложенных каталогов – Хранилищ (Storages), каждый из которых может содержать некоторое число последовательностей байтов – Потоков (Streams), в которых и хранятся данные.
Виртуальное представление формата CFBF (StructuredStorage)
Информация в потоках может храниться в любом удобном виде, включая текст, изображение в любом формате, зашифрованные или сжатые данные, или даже другие файлы CFBF. Не составляет труда поместить в поток и исполняемый код (в т.ч. вредоносный).
Используя соответствующие API (см. Structured Storage Reference в MSDN), приложение может создать файл-хранилище и предоставить каждому компоненту хранилище второго (третьего и т.д.) уровня или поток (несколько потоков) для сохранения состояния в любом формате. Контейнеру нет необходимости знать, в каком виде компонент запишет свои данные, а о размещении информации в файле позаботится стандартная библиотека. Когда необходимо загрузить сохраненное состояние, контейнер открывает хранилище и предоставляет загруженным компонентам возможность считать потоки по мере надобности.
- исключение необходимости для приложений сохранять многочисленные отдельные файлы для разных типов данных, в том числе, для экономии места на диске
- создание унифицированного интерфейса для работы с данными, облегчающего создание приложений, и, в особенности, COM-компонентов, работающих с составными документами
- возможность сохранять текущее состояние элемента данных в любой момент времени
- ускорение доступа к данным
Последний пункт требует отдельного рассмотрения. Разработка Структурированного Хранилища велась на заре развития COM (начало 90х годов), когда существующие аппаратные ресурсы предъявляли повышенные требования к быстродействию сложных систем, в том числе при чтении и записи дисковых файлов. Поэтому система хранения данных должна была быть максимально оптимизирована для быстродействия. Это исключало использование, к примеру, текстовых форматов, требующих значительной предварительной обработки. Напротив, двоичные форматы, позволяющие копировать данные в память с минимальными модификациями, имели преимущество.
Результатом стала дисковая реализация Структурированного Хранилища – формат составных двоичных файлов Microsoft (Compound File Binary Format). Долгое время формат оставался закрытым, спецификации были опубликованы производителем в 2006 году.
Формат CFBF представляет собой «файловую систему внутри файла» и имеет таблицу размещения файлов (FAT), таблицу секторов, директории и «потоки» — аналог дисковых файлов.
Техническое представление формата CFBF
- Ярлыки и списки быстрого доступа
- Кэш изображений и результатов поиска
- Файлы установки (msi и msp)
- «Заметки» Windows
Формат Compound Binary File в приложениях пакета Microsoft Office
Формат документов, используемый Microsoft Office, изначально также представлял собой CFBF.
Документ Word, открытый утилитой для просмотра Structured Storage
Современные версии пакета в качестве основного используют открытый, основанный на XML, формат OfficeOpen XML, однако поддержка CFBF не прекращается с целью поддержания совместимости. Необходимо заметить, что значительная масса кода, отвечающего за работу со старыми форматами документов, была разработана давно (около 20 лет назад).
Word | .doc | Legacy Word document; Microsoft Office refers to them as «Microsoft Word 97 2003 Document» |
.dot | Legacy Word templates; officially designated «Microsoft Word 97 2003 Template» | |
.wbk | Legacy Word document backup; referred as «Microsoft Word Backup Document» | |
Excel | .xls | Legacy Excel worksheets; officially designated «Microsoft Excel 97-2003 Worksheet» |
.xlt | Legacy Excel templates; officially designated «Microsoft Excel 97-2003 Template» | |
.xlm | Legacy Excel macro | |
PowerPoint | .ppt | Legacy PowerPoint presentation |
.pot | Legacy PowerPoint template | |
.pps | Legacy PowerPoint slideshow | |
Publisher | .pub | Microsoft Publisher publication |
Примеры устаревших, по-прежнему поддерживаемых форматов Office
Простой поиск по сайтам государственных структур и предприятий РФ (госзакупки, сайты административных единиц) обнаруживает обескураживающе большое количество официальной документации, выложенной в CFBF, зачастую созданной в древних версиях Office, например, 2003 года. Предоставим читателю провести этот опыт самостоятельно.
двоичный файл формата CFBF внутри документа OfficeOpenXML
Несмотря на то, что документы различных приложений Office основаны на CFBF, каждое хранилище состояний элементов OLE/ActiveX будет иметь свой собственный дополнительный формат. Нужно иметь ввиду, что они во многом сложились исторически и были оптимизированы для максимального быстродействия на слабых компьютерах.
Поддержка Хранилищ OLE форматом RTF
OLE-компонент отображения формул Microsoft EQUATION
Примером уязвимости, связанной с технологией COM Structured Storage, может служить CVE-2017-11882.
Уязвимость была обнаружена в компоненте Microsoft Office настолько древнем, что производителем были утрачены исходные коды компонента.
Для сохранения состояния элементы Редактора Формул (Microsoft Equation Editor) использовали потоки структурированного хранилища. Нарушение целостности данных в потоках приводило к многочисленным уязвимостям, первой обнаруженной из которых была CVE-2017-11882, найденная специалистами Embedi.
Поток структурированного хранилища элемента EquationEditor
Некоторые другие унаследованные двоичные форматы, используемые в пакете Microsoft Office
Графический фильтр EPS
Графический фильтр EPS представляет собой компонент Office, который отвечает за редактирование EPS-изображений. Они являются векторными и строятся при помощи интерпретации внутреннего языка Encapsulated PostScript (версия обычного PostScript с некоторыми ограничениями).
В силу своих особенностей этот язык поддерживает самые разнообразные конструкции и возможности. Благодаря чему уязвимости повреждения памяти в графическом фильтре EPS эксплуатируются достаточно легко. Богатство языка делает возможным использование техник HeapSpray (например, возможность использования циклов) и HeapFengShui (предсказуемость выделения памяти интерпретатором). Даже несмотря на то, что рендеринг изображения происходит на виртуальном принтере, а само исполнение программы «EPS» происходит в рамках изолированного интерпретатора, наличие благоприятных возможностей эксплуатации уязвимостей и старая кодовая база сделали EPS едва ли не самым распространенным вектором атаки офисных приложений.
Ввиду того, что модуль был изначально разработан компанией Access Softek, а затем передан компании Microsoft, в этом компоненте найдено и успешно эксплуатируется существенное число «неизвестных» уязвимостей. Например, в апреле 2017 года компанией FireEye Inc. были найдены уязвимости CVE-2017-0261 и CVE-2017-0262. Эти две уязвимости повреждения памяти позволили злоумышленникам построить READ/WRITE-примитивы, с помощью которых они и добились выполнения своего кода за пределами изолированного процесса («песочницы») интерпретатора PostScript. Злоумышленники могут читать и записывать произвольные участки памяти в адресном пространстве уязвимого процесса, а также могут выполнить, например, поиск необходимых ROP гаджетов для построения ROP-цепочки, делающей остальной шелл-код исполняемым.
В обоих случаях атакующие добивались исполнения произвольного кода похожим образом: создавали объект в памяти с контролируемым содержимым (это было возможно сделать при помощи R/W примитивов) и вызывали один из его методов при помощи функции PostScript.
Данные уязвимости в графическом фильтре «EPS» стали популярным вектором атаки. Причем настолько, что компания Microsoft в апреле 2017 разработала обновление, которое полностью отключает графический фильтр. Однако, патч применим только для версии MsOffice 2010 SP2 и выше.
Базы данных Access
- использование макросов VBA в качестве некоторых триггеров и хранимых процедур;
- возможность использования ссылок на другие базы данных;
- закрытость формата БД препятствует использованию существующих баз в других окружениях.
Первый недостаток весьма серьезный, поскольку VBA-макросы по своим возможностям равносильны обычным исполняемым файлам. По этой причине использование Access может стать проблемой для безопасности.
Пользователь должен доверять БД, с которой работает, и быть уверенным, что в ней не содержится вредоносный код, внесенный злоумышленником. В противном случае запрет исполнения макросов существенно сокращает функциональность приложения для работы с данными в таблицах и представлениями.
Файлы Личных Папок Outlook
Спецификация .ost не была опубликована, и формально доступ к файлу Offline Storage Table может осуществляться только посредством MAPI. На деле эти форматы очень схожи и редактирование .ost также возможно. Необходимо иметь ввиду, что синхронизация отредактированного содержимого файла Offline Storage Table с данными на сервере Exchange может привести к необратимой порче данных и утере значимой информации.
Файл владельца/OwnerFile
Проблема совместной работы над документами Office, расположенными в сетевых хранилищах, была когда-то решена при помощи временных файлов простого формата, так называемых OwnerFile. Если файл в данный момент заблокирован для редактирования, приложение ищет в той же директории файл с коротким именем формата «
$name.doc». Файл содержит имя пользователя, открывшего документ в ASCII и Unicode форматах, в обоих случаях под имя отведен фиксированный размер массива. При создании файла неиспользуемые байты массива заполняются мусорными значениями из памяти приложения, что потенциально может привести к раскрытию чувствительной информации (в целом, из-за размера файла вероятность этого невелика). Имя пользователя в файле владельца также легко подделывается.
Механизм шифрования офисных документов
Механизм парольной защиты документов впервые появился в пакете Office 95. В то время стойкости используемых алгоритмов шифрования уделялось мало внимания, как следствие, применялись алгоритмы, на которые существовали практически применимые атаки. Этот факт стал толчком к изменению механизма в последующих версиях офисных пакетов.
В таблице приведены в хронологическом порядке наиболее распространенные в данное время офисные пакеты и используемые в них по умолчанию алгоритмы шифрования.
Огромное количество электронных версий учебно-методических материалов в образовательных учреждениях России представлено в формате Microsoft Word. Это объясняется широкой популярностью приложений Microsoft Office среди пользователей и простотой освоения и использования данного программного продукта. Поэтому весьма актуальной является задача автоматизации процесса конвертирования образовательного контента из представления Microsoft Word в формат Moodle.
Документ Microsoft Word представляет собой специализированное СОМ-ориентированное хранилище данных - структурированное хранилище (Structured Storage), организованное по иерархическому принципу. Документ может содержать различные типы данных: структурированный текст, графику, математические выражения, организационные диаграммы и т.д.
Концепция структурированного хранилища является составной частью современной парадигмы программирования на основе модели компонентных объектов (Component Object Model - COM). По сути, структурированное хранилище - это технология объединения в одной логической единице хранения данных (файле) объектов с различной природой и свойствами. Технология СОМ предлагает стандартную реализацию концепции структурированного хранилища в виде составного файла (Compound File): файловая система внутри файла. СОМ-хранилище представляет собой иерархическую структуру коллекций объектов двух типов: хранилищ (Storage) и потоков (Stream), которым в традиционной файловой системе соответствуют каталоги и файлы. Данный подход позволяет существенно снизить издержки хранения в одном файле объектов различной природы.
Объект-хранилище, аналогично каталогу файловой системы, может содержать потоки и другие хранилища. Фактически это означает, что хранилище содержит записи с информацией о местоположении, размере и других свойствах размещенных в нем объектов-потоков и других хранилищ. Объект-поток является последовательностью байтов, интерпретация которых, как и для обычного файла, зависит от типа потока (файла). Составной файл обязательно должен содержать корневое хранилище (Root Storage), которое, в свою очередь содержит как минимум один объект-поток, представляющий данные о самом хранилище (Native Stream), рис. 5. Кроме этого, корневое хранилище содержит имя составного файла в нотации файловой системы, к которой он принадлежит.
Каждый объект документа в составном файле представлен отдельным хранилищем, которое может содержать:
- один или несколько объектов-потоков, соответствующих экземплярам данного объекта;
- другие объекты-хранилища, представляющие встроенные в негообъекты (InlineStorage), и т.д.
Таким образом, глубина вложенности объектов в хранилище теоретически не ограничена, документ может быть сколь угодно сложным.
В общем случае технология СОМ предоставляет набор средств уровня API для работы с произвольными структурированными хранилищами. Так, объекты-хранилища и объекты-потоки поддерживают стандартный набор интерфейсов:
- IRootStorage - связывает хранилище с содержащим его файлом;
- IStorage - содержит методы для создания, открытия, модификации,перемещения, копирования, переименования, удаления объектовхранилища;
- IStream - поддерживает операции с потоком, аналогичные файловым операциям в файловой системе: чтение, запись, управлениеуказателем и т.д.;
- ILockBytes - реализует байтовый буфер для работы с носителямиданных;
- IPersist - идентификация объектов на уровне операционной системы;
- IPersistStorage - поддержка иерархической структуры хранилища;
- IPersistStream - реализует сериализацию объектов хранилища;
- IPersistFile - доступ к объектам, содержащимся в других файлах.Кроме этого, имеется StructuredStorageAPI, содержащий следующие
основные группы функций:
- функции-ярлыки, выполняющие пакетные вызова других API-функций и интерфейсных методов для решения стандартных задач;
- функции доступа к реализации структурированного хранилища исоставному файлу;
- функции конвертирования и эмуляции объектов, которые дают возможность OLE-серверу работать с объектами, созданными другимсервером;
- функции конвертирования объектов формата OLE 1 в структурированное хранилище.
Конкретные реализации СОМ-приложений, использующие структурированные хранилища, как правило, имеют собственные библиотеки объектов-оберток API-интерфейса. Так, Microsoft Word предоставляет в распоряжение прикладных программ сотни объектов. Отношения наследования и агрегации объединяют эти объекты в иерархическую структуру - объектную модель Microsoft Word.
На рис. 6 представлен концептуальный уровень объектной модели Microsoft Word, который включает в себя шесть базовых объектов:
Рис. 6. Объектная модель Microsoft Word
К особенностям модели в первую очередь относится наличие множественных перекрытий. Так, Document и Selection являются компонентами объекта Application, однако Document так же является свойством объекта Selection. Среди свойств Document и Selection имеются объекты Bookmark и Range. Перекрытия обеспечивают множественный доступ к объектам модели. Например, операция форматирования применима к объекту Range, который может быть определен как текущее выделение (Selection), абзац, раздел либо документ целиком.
Объект Application представляет приложение Microsoft Word и содержит все остальные объекты модели. Свойства и методы Application дают возможность полностью контролировать среду приложения Word.
Базовым компонентом, обеспечивающим доступ и манипулирование документами, является объект Document. В пространстве имен сборки Office Primary Interop для операционной среды .NET этот объект имеет вид:
Microsoft.Office.Interop.Word.Document
Объект Document содержит непосредственно данные документа (текст, графику и т.д.), сведения о структуре и форматировании документа. Структурные компоненты документа (абзацы, разделы, страницы, колонтитулы, стили и т.д.) представлены коллекциями экземпляров соответствующих свойств объекта. При создании нового или загрузке существующего документа Word создает новый экземпляр объекта Document и помещает его в коллекцию Documents объекта Application. Коллекция поддерживает указатель активного документа, который всегда представлен значением свойства ActiveDocument объекта Application.
Объект Selection представляет текущую выделенную область документа. Все операции форматирования документа применяются к текущему экземпляру объекта Selection. Экземпляр Selection существует всегда: если в документе отсутствует выделение, то он представляет текущую позицию ввода.
Объект Range представляет непрерывную область документа, определенную начальным и конечным символами. Он характеризуется следующими свойствами:
- Range может представлять текущую позицию ввода, непрерывнуюобласть текста или документ целиком;
- Range включает управляющие символы - отступы, табуляции, разрывы срок, границы абзацев и т.д.;
- Range может представлять текущее выделение или другой участокдокумента;
- участок документа, представляемый объектом Range не выделяетсявизуально;
- если новый текст вводится в конец диапазона, представленного объектом Range, то он включается в состав объекта;
- объекты Range не сохраняются вместе с документом.Возможно определение нескольких экземпляров объекта Range в одном и том же документе.
Объект Bookmark, аналогично Range, представляет непрерывную область документа и может использоваться как контейнер для текста. В отличии от Range, объекты Bookmark:
- именуются;
- сохраняются вместе с документом;
- могут быть видимыми - свойство ShowBookmarks = True объектаView.
В общем случае документ Microsoft Word является сложной композитной структурой, содержащей различные типы данных. Для извлечения данных из конкретного документа необходимо произвести его синтаксический анализ - парсинг (Parsing): определить типы хранящихся данных (текст, графика, таблицы, OLE-объекты) и выявить структуру документа.
Решение задач парсинга и извлечения контента из документа Microsoft Word связано, в основном, с использованием свойств и методов объекта Document. Имеет смысл построить модель документа, ориентированную на решение данного типа задач: среди порядка сотни свойств и методов объекта Document выявим необходимые для достижения поставленной цели и определим порядок их использования.
Основными типами данных документа Microsoft Word являются: текст, графика и таблицы. Таким образом, задача структурного анализа документа разделяется на три подзадачи:
- парсинг текста документа;
- парсинг таблиц;
- парсинг графики.Основной структурной единицей текста документа является абзац, представленный объектом Paragraph. Все абзацы документа объединяются в объект-коллекцию Paragraphs. Коллекции модели MicrosoftWord имеют стандартный набор свойств и методов для работы с контейнером, включая методы-итераторы для перебора элементов. Непосредственный доступ к тексту предоставляет объект Range, который создается для большинства компонентов модели MicrosoftWord.
Range является свойством объекта Paragraph. Текстовое содержание абзаца доступно через свойство Range.Text объекта Range. Общая модель парсинга текста документа Microsoft Word представлена на рис. 7.
Объект Range представляет собой базовый компонент модели структурного анализа документа (рис. 8).
Range предоставляет доступ ко всем основным типам данных документа. Среди его свойств - коллекции абзацев (Paragraphs), графических изображений (InlineShapes, ShapeRange), таблиц (Tables), рамок (Frames).
Объекты-таблицы (Table) содержатся в коллекции Tables и имеют структуру, представленную на рис. 9. Данные таблицы располагаются в ячейках - объектах Cell, объединенных в коллекции Cells. Имеется несколько вариантов получения доступа к экземплярам коллекций:
- коллекция ячеек таблицы является свойством её объекта Range;
- коллекция ячеек строки - свойство объекта Row из коллекции Rows;
- коллекция ячеек столбца - свойство объекта Column из коллекции
Columns;
Можно получить прямой доступ к ячейке с помощью метода объекта-таблицы Table.Cell(Row, Column), который возвращает заданный объект Cell.
На примере таблиц проявляется важное свойство, необходимое для четкого понимания модели документа Microsoft Word - рекурсивный характер структуры документа. Свойство Range объекта-ячейки Cell может, в свою очередь, содержать коллекции таблиц, графики и абзацев (рис. 9). Это дает основания для применения рекурсивных алгоритмов анализа структуры документа.
Графические данные документа Microsoft Word могут содержаться в двух типах объектов: Shape и InlineShape. InlineShape представляет графический объект в текстовом слое документа (рисунок, OLE-объект, ActiveX-элемент). Shape - это графический объект в слое рисования документа или так называемом полотне (Canvas). Данный объект характеризуется параметрами обтекания текстом и имеет привязку (Anchor) к абзацу или диапазону. Модель парсинга графических объектов документа представлена на рис. 10.
Графические объекты текстового слоя составляют коллекцию Inline-Shapes объекта-диапазона, графические объекты полотна - коллекцию ShapeRange. Кроме этого, графику могут содержать объекты-рамки (Frame) из контейнера Frames.
Доступ к графическим объектам рамки осуществляется по той же схеме через его свойство Range. Следует отметить, что содержимое объекта-рамки можно скопировать в буфер обмена Windows.
Вопросы и ответы в сфере it технологий и настройке ПК
Документ Microsoft Word представляет собой файл с расширением doc или docx. До 90-х годов XX века расширение doc использовалось для текстовых файлов, которые не содержат разметки. И сейчас можно убедиться, что файл такого типа легко создать с помощью, например, программы «Блокнот». Правда, он не будет иметь богатого форматирования, но легко открывается программой Ворд, в которой набранному в блокноте тексту можно придать более оформленный вид. Когда корпорация Майкрософт выпустила программу Ворд, разработчики решили использовать в ней расширение doc. К настоящему времени этот текстовый редактор является самым популярным в мире, поэтому файл с расширением doc ассоциируют с этим программным продуктом и называют просто «вордовский формат».
Что такое формат?
Старый формат DOC отличался сложным содержанием, и нормально читался только в MS Office
Современные форматы «вордовских» документов
Даже бесплатные современные редакторы документов умеют корректно работать с DOCX
Кроме того, сложности могут возникнуть даже при использовании разных версий офисного пакета Майкрософт. Дело в том, что начиная с версии Word 2007 года документ по умолчанию сохраняется с расширением не doc, а docx. Поэтому если установлен пакет офиса, выпущенный ранее, то необходима конвертация для устаревших версий. Конверторы для обеспечения совместимости предлагаются самой компанией Майкрософт (Microsoft Office Compatibility Pack), так что обычно при открытии docx, например, в версии Ворд 2003, сложностей не возникает, но при этом может потеряться часть данных форматирования и возможностей редактирования.
Компания Майкрософт была вынуждена пойти на изменение формата Word под давлением международных организаций, которые требовали подвести его под какие-либо стандарты. Был выбран вариант, основанный на языке разметки XML, который часто используется в документах интернет. Документ с расширением docx имеет некоторые преимущества перед устаревшим форматом, в частности, меньший вес, что имеет значение при передаче документа через интернет. Поэтому при ограниченных скоростях передачи данных пользователям имеет смысл использовать более современный формат Word.
Читайте также: