типом геоинформации. Также, использование объектно-ориентированного программирования для создания геоинформационных систем позволяет легко внести небольшие изменения в пользовательское представление информации, например добавить еще несколько окон проекции или добавить
включаемый фильтр перевода представления моделей в черно-белую форму.
* * *
Поскольку в геоинформационных системах графические объекты связаны с табличными данными, программе необходимо эффективно обрабатывать графику и одновременно семантику, что несомненно усложняется гигантскими объёмами информации. Интеллектуальные ГИС к тому же должны обеспечивать комплексный анализ и интерпретацию разнотипных данных, поддержку принятия решений и моделирование в распределенной среде. Отсюда следует, что для таких ГИС необходимо разрабатывать специализированные объектные модели предметной области с возможностью установления любых необходимых топологических связей между объектами и классами объектов.
Список литературы:
1. Википедия [Электронный ресурс]. - Режим доступа: http://ru.wikipe-dia.oig/wiki (дата обращения: 28.05.12).
СПОСОБЫ И СРЕДСТВА АВТОМАТИЗАЦИИ ТЕКСТОВОГО ПРОЦЕССОРА MICROSOFT WORD
© Петров Ю.И.*, Шупикова Ю.В.4,
Викулина Д.А.*, Макаров С.Н.*
Московский государственный университет приборостроения и информатики, г. Москва
В статье рассматриваются способы и средства автоматизации текстового процессора Microsoft Word, приводятся их основные особенности, преимущества и недостатки, а также демонстрируются примеры реализации.
Microsoft Word является наиболее популярным из используемых в настоящий момент текстовых процессоров. Бинарный формат документа «.doc» фактически является стандартом де-факто, а конкурирующие офисные пакеты, как правило, имеют поддержку совместимости с данным форматом. На
* Кафедра «Экономические информационные системы».
* Студент кафедры «Экономические информационные системы». " Студент кафедры «Экономические информационные системы».
* Студент кафедры «Экономические информационные системы».
платформе IBM PC формат «.doc» стал синонимом двоичного формата Word 97-2003. Подобная популярность обусловила появление во многих прикладных программных продуктах функции экспорта / импорта отчета в формате «.doc», а большинство предприятий используют Microsoft Word в своем документообороте в качестве стандарта при работе с офисными документами.
Увеличение сложности и трудоемкости генерации (со стороны разработчиков) и создания (со стороны пользователей) документов Word приводит к необходимости применения средств автоматизации рутинных или часто повторяющихся операций. Используя различные способы автоматизации, такие средства могут существенно повысить производительность, как сотрудников, так и разработчиков прикладных решений, что подчеркивает актуальность рассматриваемой темы.
1. Способы автоматизации Microsoft Word
В настоящее время выделяют следующие способы / технологии автоматизации текстового процессора Microsoft Word:
1. OLE Automation.
2. Open Office XML-библиотеки.
3. Библиотеки сторонних разработчиков, использующие, как OLE Automation и Open Office XML, так и прямой доступ к файлам.
1.1. OLE Automation
OLE Automation (Object Linking and Embedding) - технология компании Microsoft, позволяющая обращаться к COM-объектам из интерпретаторов скриптовых языков, таких, как VBScript [1]. Непосредственно COM (Component Object Model - объектная модель компонентов) представляет собой технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения (ПО) на основе взаимодействующих между собой компонентов, каждый из которых может использоваться во многих программах одновременно [2]. Стандарт воплощает в себе идеи полиморфизма и инкапсуляции объектно-ориентированного программирования, а сервера автоматизации является частью технологического стандарта
Ключевое понятие, лежащее в основе стандарта COM - COM-компонент. Программы, построенные на стандарте COM, фактически не являются автономными программами, а представляют собой набор взаимодействующих между собой COM-компонентов. Каждый компонент имеет уникальный идентификатор (GUID) и может одновременно использоваться многими программами. Компонент взаимодействует с другими программами через COM-интер-фейсы - наборы абстрактных функций и свойств. Каждый COM-компонент должен, как минимум, поддерживать стандартный интерфейс «IUnknown», который предоставляет базовые средства для работы с компонентом. Интерфейс «IUnknown» включает в себя три метода: Querylnterface, AddRef, Release.
Microsoft Word, как и все приложения пакета Microsoft Office, является сервером автоматизации и поддерживает технологию OLE. Реализованный как COM-сервер, он может предоставлять другим приложениям, называемыми COM-диспетчерами или COM-контроллерами, доступ к документу, абзацу, закладке с помощью соответствующих объектов.
Объекты автоматизации с точки зрения программирования мало чем отличаются от обычных объектов, известных из теории и практики объектно-ориентированного программирования. Как и обычные объекты, они обладают свойствами и методами. Свойство - это характеристика объекта; например, свойством абзаца (объект Paragraph) может быть его стиль (Style). Методом называется действие, которое можно выполнить с объектом (например, можно сохранить документ с помощью метода SaveAs объекта Document). Нередко серверы автоматизации содержат наборы однотипных объектов, называемых коллекциями. Например, текстовый процессор может содержать коллекцию документов, а каждый документ - коллекцию абзацев.
Для того, чтобы узнать, какие объекты автоматизации доступны для использования, производитель программного обеспечения включает в комплект поставки сервера автоматизации документацию и файлы справки, описывающие предоставляемую объектную модель.
Вся информация об объектах, необходимая контроллерам автоматизации, содержится в библиотеках типов. Библиотеки типов хранятся в специальном бинарном формате и обычно представлены в виде файлов с расширениями *.olb или *.tlb, а также могут содержаться внутри исполняемых файлов (*.exe) или динамически загружаемых библиотек (*.dll).
Для связи с сервером автоматизации существует два способа:
- позднее связывание;
- раннее связывание.
Позднее связывание означает, что реальная ссылка на объект в переменной или классе появляется на этапе выполнения приложения-контроллера. Этот способ обычно более медленный, чем ранее связывание, но он доступен во всех средствах разработки, позволяющих создавать контроллеры автоматизации, и менее чувствителен к тому, все ли параметры методов перечислены при их вызовах в коде приложения-контроллера.
Раннее связывание означает, что реальная ссылка на объект автоматизации появляется уже на этапе компиляции. Поэтому в коде приложения-контроллера требуется ссылка на библиотеку типов (или на специальный модуль, являющийся интерфейсом к ней), и это приводит к генерации в этом приложении классов с теми же свойствами и методами, что и у объектов автоматизации, что делает возможными синтаксическую проверку имен методов на этапе компиляции и доступ к именованным константам, содержащимся в библиотеке типов. Отметим, однако, что не все средства разработки, поддерживающие позднее связывание, осуществляют также поддержку раннего связывания.
При позднем связывании корректность вызовов методов проверяется в момент их осуществления, то есть на этапе выполнения приложения, а не на этапе его компиляции.
1.1.1. Общие принципы создания контроллеров автоматизации
В общем случае контроллер автоматизации должен выполнять следующие действия [3] :
1. Проверить, запущена ли копия приложения-сервера (необязательный шаг).
2. В зависимости от результатов проверки и требований разрабатываемого продукта запустить копию автоматизируемого приложения Microsoft Word, либо подключиться к уже имеющейся копии.
3. Сделать окно приложения-сервера видимым (необязательный шаг).
4. Выполнить какие-либо действия с приложением-сервером (например, создать или открыть документы, изменить их данные, сохранить документы и пр.).
5. Закрыть приложение-сервер, если его копия была запущена данным контроллером, или отключиться от него, если контроллер подключился к уже имеющейся копии.
1.1.2. Объектная модель Microsoft Word
Общая структура объектной модели текстового процессора Microsoft Word представлена на рис. 1 [4].
Приложение Word Word. Application
Выделенный объект Selection
Рис. 1. Объектная модель Microsoft Word
Объектная модель представляет собой древовидную структуру, корнем которой является объект Application, представляющий текущий экземпляр Word. Объект Application содержит объекты Document, Selection, Bookmark и Range. Каждый из этих объектов имеет много методов и свойств, которыми можно управлять и с которыми можно взаимодействовать.
Winapi.ActiveX, System.Win.ComObj, System.Variants;
WordApplication, WordDocument: Variant; WordlsRunning: Boolean;
begin
CoInitializeEx(nil, 0); try try
WordApplication := GetActiveOleObject('Word. Application'); WordlsRunning := not VarlsNull(WordApplication); if not WordlsRunning then
WordApplication := CreateOleObject('Word.Application*) ;
WordDocument := WordApplication.Documents.Open('ПТ-8 Секция 3 Петров.docx');
WriteLn(Format('Текст первого абзаца: * + 3LineBreak + т"%з"f sIiineBreak +
'Количество таблиц: %s' + sLineBreak + т Количество рисунков: %s *,
[ Wo г dDo cume nt. Pa r a graphs . Fi r s t. Ra nge. T ext, WordDocument.Tables.Count, WordDocument.InlineShapes.Count
Ш ;
WordDocument.Close; if not WordlsRunning then WordApplication.Quit;
except
on E: Exception do Writebn(E.Message);
end; finally
WordApplication := Unassigned; end; end.
Листинг 1. Пример взаимодействия Delphi и Microsoft Word с использованием OLE Automation (позднее связывание)
На первый взгляд объектная модель - это множество перекрытий. Например, объекты Document и Selection члены объекта Application, но объект Document также член объекта Selection. Оба объекта, Document и Selection, содержат объекты Bookmark и Range. Перекрытие существует, поскольку существует множество способов доступа к одному и тому же типу объекта. Например, форматирование применяется к объекту Range, но может понадобиться получить доступ к объектам в диапазоне текущего выбора, конкретного параграфа, раздела или всего документа. Объект Range представляет непрерывную область документа, определенную начальным и конечным символами и обеспечивает доступ практически ко всем объектам текстового процессора.
Пример взаимодействия c COM-сервером Microsoft с использованием языка программирования Delphi приведен в листинге 1, результаты его выполнения - на рис. 2.
nelphi Л OIF Ûntnmatinn 1 = | И
Текст первого абзаца:
"СПОСОБЫ И СРЕДСТВА АВТОМАТИЗАЦИИ ТЕКСТОВОГО ПРОЦЕССОРА MICROSOFT UOHD
Количество таблиц: 2
Количество рисунков: 3
< ггг _,1 t
1. _J
Рис. 2. Результат выполнения Листинга 1 1.2. Open XML-библиотеки
Office Open XML (OOXML, DOCX) - серия форматов файлов для хранения электронных документов пакетов офисных приложений - в частности, Microsoft Office. Формат представляет собой zip-архив, содержащий текст в виде XML, графику и другие данные, которые могут быть переведены в последовательность битов (сериализованы) с применением защищённых патентами двоичных форматов, спецификации которых были опубликованы Microsoft для пользователей OOXML на условиях Microsoft Open Spécification Promise [5].
Первоначально формат создавался как замена прежнему двоичному формату документов, который использовали приложения Microsoft Office вплоть до версии Office 2003 включительно. В 2006 году формат Office Open XML был объявлен свободным и открытым форматом Ecma International. Он является форматом по умолчанию для приложений Microsoft Office 2007 и более поздних.
Две разные версии OOXML определены в ECMA-376 и в ISO 29500: 2008. Полная поддержка формата ISO 29500 ожидается в Microsoft Office 2010. Несмотря на стандартизацию и значительные маркетинговые услилия, прилагаемые Microsoft, формат документа неоднократно подвергался критике экспертов. В частности, он достаточно сложен, документация к нему занимает более 7000 страниц [6], что сильно затрудняет поддержку формата сторонними разработчиками.
Все, что нужно для работы с файлами данного формата - установить библиотеку, поддерживающую данный формат файлов. Для .NET Framework Microsoft предоставляет пакет OpenXML SDK [7], представляющий собой набор .NET-классов, позволяющих полноценно работать с файлами Office Open XML. Программная поддержка формата имеется также и для других средств разработки [8] :
- Apache POI c 3.5 версии;
- Aspose.Words (для .NET и Java) поддерживает открытие и сохранение документов формата Office Open XML;
- docx4j - открытая библиотека (Apache-лицензия) для поддержки WordprocessingML компонента в Java;
- OpenXML4J - Java-библиотека, предназначенная для создания и управления Office Open XML- и OPC-документами;
- SoftArtisans WordWriter поддерживает создание Office Open XML документов с использованием шаблонов;
- TX Text Control, семейство компонентов для работы с Word, поддерживающие чтение и запись документов формата Office Open XML;
- В Zend Framework 1.7 поисковый движок PHP позволяет искать информацию в документах Office Open XML;
using Document Format. OpeiiXml. Packaging; using Document Format. OpeiiXml .Wordprocessing; using Document Format. OpeiiXml;
namespace ConsoleApplicationl {
class Program {
static void Main(string[] args) {
WordprocessingDocument wordDoc =
WordprocessingDocument.Open{@"ПТ 8 Секция 3 Петров.docx", true) Do cume nt do с = wo r dDo с . Ma i nDo cume n t Pa r t. Do cumen t;
Console.WriteLine{"Текст первого абзаца:\n\"{0}\"\n" + "Количество таблиц: {1}\п" + "Количество рисунков: {2}", doc.Body.Elements<Paragraph>() . First().InnerText,
doc.Body.Elements<Table>{).Count(),
doc.Body.Descendants<Drawing>().Count());
wordDoc.Close();
}
j_
Листинг 2. Пример взаимодействия C# и Microsoft Word с использованием Office Open XML SDK
- Python-docx - нативная библиотека для Python, позволяющая создавать, редактировать и искать информацию в docx / WordML-файлах;
- paradocx, нативная библиотека для Python, основанная на openpack для записи docx / WordML-файлов.
- Templater поддерживает создание docx и xlsx файлов из шаблонов, доступен для .NET and JVM.
Пример взаимодействия c документом *.docx с использованием языка программирования C# приведен в листинге 2, результаты его выполнения -на рис. 3.
Текст первого абзаца:
"Способы и средства автоматизации текстового процессора Microsoft Word" Количество таблиц: 2 Количество рисунков: 3
Рис. 3. Результат выполнения Листинга 2 1.3. Библиотеки сторонних разработчиков
Компоненты сторонних производителей программного обеспечения, как правило, либо позволяют упростить традиционные способы взаимодействия с Microsoft Word, либо предоставляют дополнительную функциональность. В настоящее время существует множество библиотек, позволяющих работать с документами Microsoft Word (как нового формата *.docx, так и старого - *.doc), включающих поддержку различных языков программирования. Среди таких пакетов компонентов следует отметить следующие:
- Aspose.Words для .NET и Java;
- компоненты MS Word Document для Delphi.
Aspose.Words представляет собой комплексную библиотеку классов для .NET [9] и Java [10], позволяя взаимодействовать с документами DOC, OOXML, RTF, HTML, OpenDocument, PDF, XPS, EPUB и др. напрямую из .NET/Java-приложения без использования Microsoft Word.
Компоненты TMSWordDocument и TMSWordXDocument позволяют напрямую (без использования OLE-automation) взаимодействовать с документами Microsoft Word форматов *. doc и *docx соответственно [11]. Устанавливать текстовый процессор на целевом компьютере не требуется.
1.4. Средства автоматизации Microsoft Word
Для взаимодействия с текстовым процессором Microsoft Word могут быть использованы средства и языки разработки в зависимости от рассмотренных способов доступа. Для выбора средства разработки следует рассмотреть такие вопросы как, необходимость / возможность установки на компьютере
пользователя текстового процессора Microsoft Word, поддержка автоматизации каких типов файлов будет необходима при автоматизации, критична ли скорость обработки документов и т.д.
Если установка Microsoft Word на компьютере пользователя не представляется возможной или требует значительных вложений (т.к. Microsoft Office необходимо приобретать отдельно, что увеличивает совокупную стоимость разрабатываемого ПО) - необходимо использовать компоненты сторонних разработчиков (для поддержки всех форматов) или ограничиться новым форматом *.docx, используя стандартные библиотеки. Выбор средства программирования в данном случае определяется наличием и удобством библиотеки для предпочитаемого языка программирования. Для прямого взаимодействия с Office Open XML целесообразно использовать языки разработки, имеющие поддержку данного формата в виде специализированных библиотек, т.к. самостоятельных парсинг файла *.docx достаточно сложен. Здесь стоит отдать предпочтение платформе .NET Framework, учитывая наличие Open XML SDK от производителя Microsoft Office, способствующей быстрому созданию приложений, например, на языке Microsoft C#.
Если установка Microsoft Word на компьютере пользователя не представляет проблемы, это позволяет использовать технологию OLE Automation. В этом случае контроллеры автоматизации можно создавать с помощью любых средств разработки, поддерживающих технологию COM. Одним из наиболее популярных средств является встроенный язык VBA (Visual Basic for Applications), использующий раннее связывание и не требующий приобретения / использования других средств программирования. Кроме этого, могут быть использованы другие языки, в частности Embarcadero Delphi, пример взаимодействия которого с Microsoft Word был приведен в статье. Следует отметить, что в настоящее время OLE Automation - наиболее часто используемая технология, в первую очередь за счет обеспечения универсального доступа через относительно простую объектную модель, однако стоит отметить, что OLE-automation, как правило, имеет меньшую производительность по сравнению с прямым доступом (в компонентах сторонних
разработчиков) и библиотеками доступа к Open Office XML.
* * *
Ведение документации - довольно трудоемкий процесс, подразумевающий выполнение однотипных и неоднократно повторяющихся действий со стороны пользователей офисных пакетов. Это в свою очередь говорит о необходимости внедрения в практику средств, позволяющих автоматизировать соответствующие процессы.
В статье были рассмотрены основные способы и средства автоматизации документов текстового процессора Microsoft Word, приведены ключевые мо-
менты рассматриваемых технологий. Широкие возможности, предоставляемые OLE Automation, Office Open XML SDK и библиотеками сторонних разработчиков могут быть использованы в случае необходимости автоматизации документов, что несомненно приведет к повышению эффективности деятельности сотрудников и упростит процессы ведения документации.
Список литературы:
1. Windows Programming: OLE Automation (Guide) [Электронный ресурс] // Skolob Matrix. - 2007. - Режим доступа: www.skolob.co.uk/skolob/ index.php?op=ViewArticle&articleId=5&blogId=1 (дата обращения: 03.06.12).
2. COM: Component Object Model Technologies [Электронный ресурс] // Microsoft Corporation. - 2012. - Режим доступа: www.microsoft.com/com/de-fault.mspx (дата обращения: 03.06.2012).
3. Елманова Н. Автоматизация приложений Microsoft Office в примерах. Ч. 1. Microsoft Word и Microsoft Excel [Электронный ресурс] // Компьютер Пресс. - 2000. - № 11. - Режим доступа: www.compress.ru/article.aspx?id=12230 (дата обращения: 05.06.2012).
4. Корняков В. Программирование документов и приложений MS Office в Delphi (+ CD-ROM). - СПб.: БХВ-Петербург, 2006. - 496 с.
5. Standard ECMA-376 [Электронный ресурс] // ECMA International. -
2011. - Режим доступа: www.ecma-international.org/publications/standards/ Ecma-376.htm (дата обращения: 02.07.2012).
6. Publication of ISO/IEC 29500:2008, Information technology - Document description and processing languages - Office Open XML file formats [Электронный ресурс] // ISO. - 2008. - Режим доступа: www.iso.org/ iso/news.htm? refid=Ref1181 (дата обращения: 02.07.2012).
7. Welcome to the Open XML SDK 2.0 for Microsoft Office [Электронный ресурс] // Microsoft Corporation. - 2012. - Режим доступа: http://msdn.micro-soft.com/en-us/library/bb448854.aspx (дата обращения: 06.07.2012).
8. List of software that supports Office Open XML [Электронный ресурс] // Wikipedia. - 2012. - Режим доступа: http://en.wikipedia.org/wiki/List_of_soft-ware_that_supports_Office_Open_XML (дата обращения: 10.07.2012).
9. Aspose.Words for .NET [Электронный ресурс] // Aspose. - 2012. - Режим доступа: www.aspose.com/categories/.net-components/aspose.words-for-.net/ default.aspx (дата обращения: 11.07.2012).
10. Aspose.Words for Java [Электронный ресурс] // Aspose. - 2012. - Режим доступа: www.aspose.com/categories/java-components/aspose.words-for-java/default.aspx (дата обращения: 11.07.2012).
11. MSWordDocument [Электронный ресурс] // Scalabium Software. -
2012. - Режим доступа: http://www.scalabium.com/msword/index.htm (дата обращения: 11.07.2012).