Word c что это
Перейти к содержимому

Word c что это

  • автор:

Программная работа с документами Word с помощью библиотеки Microsoft.Office.Interop.Word

На данном занятии будет реализована возможность экспорта данных из приложения для визуализации расходов пользователей в документ Word. Расходы каждого пользователя будут экспортироваться на отдельную страницу, названием которой будет ФИО пользователя. Расходы будут просуммированы по категориям и представлены в виде таблицы. Под таблицей будет размещена информация о максимальном и минимальном платежах данного пользователя. Основные шаги построения приложения:

Word c что это

Прежде чем приступить к рассмотрению поставленных вопросов, создадим новый простой проект (Рис.1.) с именем AppWordExcel (или любым другим, или используем ). Поместим на панели приложения три контрола Button. Свойства Tag контролов установим, соответственно, в значения 1, 2 и 3. Выберем способ «раннего связывания» для сервера автоматизации Word (см. Параграф 1. этого раздела). При написании кода будем использовать .Net сборки взаимодействия с приложениями Microsoft Office. Напомним, что при использовании импортирования библиотеки типов Com объекта и добавлении ссылки на него в Solutation Explorer (References, вкладка Com), нам сразу становится доступно пространство имен объекта (в данном случае Word). При использовании .Net сборок взаимодействия с приложениями Microsoft Office нам, после добавления ссылки на Microsoft.Office.Interop.Word (References, вкладка .Net), потребуется введение алиаса пространства имен Word:

Введение алиаса позволяет не только сократить количество кода при обращении к объектам, но и дает возможность использовать весь код, который мы напишем ниже, для любого способа связывания.

Рис.1. Проект решения AppWordExcel

Создадим обработчик нажатия для кнопки 1 и замкнем на него обработчики нажатия всех кнопок. Запишем следующий, общий для всех примеров, приводимых ниже, код:

В case 1 будем размещать код, в котором выполняется какое-либо действие по старту Excel и выводу информации, в case 2 — дополнительные действия и действия при закрытии приложения, в default — поместим код выхода из приложения.

Обратите внимание на разный способ получения объектов коллекций в Visual Studio 2003 и 2005/2008. Других отличий в примерах приводимого ниже кода нет !

Параграф 1. Запуск и закрытие Word из приложения

Объекты, которыми оперирует сервер Word, столь же многочисленны как и объекты для Excel. Основное внимание в параграфе будет уделено тем объектам, которые непосредственно требуются для обмена информацией приложения и сервера.

Рис.2. демонстрирует иерархию объектов Word. Все объекты доступны и из приложения на C#. Отличие заключается в том, что для приложения-контроллера доступны непосредственно Word.Application (экземпляр Word без открытых документов) и Word.Document, (экземпляр Word с открытым или загруженным документом). Остальные объекты Word являются так называемыми внутренними объектами. Это означает, что они не могут быть созданы сами по себе; так, объект Paragraph не может быть создан без документа (впрочем, параграф или абзац равно не доступен и макросу в Word при отсутствии открытого документа).

Рис.2. Основные объекты Word.

С точки зрения приложения все объекты Word имеют иерархическую структуру. Объект Application — это СOM сервер и оболочка для других объектов. Он может содержать один или более объектов Document. Объекты Document могут содержать такие объекты как Paragraph, Table, Range, Bookmark, Chapter, Word, Sentence, Sections, Headers, Footers. Более правильнее, объект Application может содержать коллекцию Documents — ссылок на объекты типа Document, а каждый объект типа Document — коллекцию Paragraphs или ссылок на объекты типа Paragraph и т.д.

Основные объекты в иерархии объектов Word, необходимые при разработке приложения показаны на Рис.3. И, в тоже время, рисунок лишь поверхностно отображает иерархию. Так, если объект Word.Document содержит объекты Table, Paragraph, Character, Range, Bookmark, InlineShape, Comment, CommandBar. (доступные через коллекции соответствующих Tables, Paragraphs, Characters, Range, Bookmarks, InlineShapes, Comments, CommandBars . ), то большинство свойств и методов объектов Word доступны приложению и через специфический объект Selection, представляющий некоторую выделенную область документа и, в зависимости от того, какая область документа выделена, меняются его методы и свойства. Объект Selection всегда существует и доступен (даже если ничего не выделено в документе, то он представляет курсор ввода — insertion point). В тоже время, большинство объектов доступно и объекту Range, в том числе и сам документ. Поэтому, когда необходимо «достучаться» до объекта не прямыми путями, то более подойдет для ориентации Рис.2., иначе достаточно и иерархии Рис.3.

Рис.3. Иерархия основных объектов Word, необходимых при разработке приложения

Работа с документами, параграфами, символами, закладками и т.д. осуществляется путем использования свойств и методов этих объектов. Объекты при создании решений принято определять глобально для того, чтобы обеспечить доступ к ним из любой функции проекта. Определим глобально основной объект Word.Application.

Следующий код теперь позволяет выполнять запуск Word и его закрытие при нажатии соответственно кнопок 1 и 2.

Прежде чем рассматривать приведенный выше код, заметим, что как и при использовании метода Activate в Excel (см.Глава 2., Параграф 10. этого раздела), в данном коде возникает предупреждение компилятора при использовании метода (только в VisualStudio 2005/2008) Quit. Оно выглядит следующим образом:

Эта двусмысленность в использовании одноименных свойства и метода объявленных в интерфейсе _Application(namespace Microsoft.Office.Interop.Word) и интерфейсе ApplicationEvents4_Event (namespace Microsoft.Office.Interop.Word). Оба эти интерфейса наследует класс объекта:

И, хотя использование метода Quit не приводит к двусмысленности в выполнении кода, для тех, кто привык писать «чистый код», этот «глюк» лучше устранить. Устранение подобных неудобств можно выполнить через обработчики событий (как это делается мы видели в Главе 2. Параграф 9. этого раздела) или, как рекомендует компилятор, через использование приведения к группе (Using method group). Следующий код не будет давать предупреждения компиляции:

Поскольку этот способ проще, описанного в Главе 2, то будем далее использовать именно его.

Рассмотрим приведенный код создания сервера Word.

Создание объекта Word.Application аналогично тому, как мы это делали в Excel, закрытие же сервера требует использования ряда параметров с ключевым словом ref, которые, как и для многих других методов в Word, должны быть записаны в переменную до передачи в метод. В каждом случае требуется создавать переменную типа Object, присваивать ей значение и использовать эту переменную с ключевым словом ref.

wdDoNotSaveChanges — не сохранять,

wdPromptToSaveChanges — выдать запрос перед сохранением,

В нашем примере мы еще не создали документ и, поэтому, любая константа пока не оказывает влияние на выход. Однако, если в уже в запущенном Word создать документ (обычным для Word способом) и что-то в него записать, то при закрытии Word будет выдан запрос — сохранять или нет документ.

wdOriginalDocumentFormat — в оригинальном формате документа (не изменяя его),

wdPromptUser — по выбору пользователя (актуально при открытии документа, а не при его создании, при создании и сохранении окно сохранения документа всегда присутствует при отсутствии заданного имени документа).

RouteDocument — необязательный параметр. При true документ направляется следующему получателю, если документ является attached документом.

Параграф 2. Создание документов

Как отмечалось, основным в иерархии объектов Word.Application является объект Document. Информация об объектах Document хранится в виде ссылок на открытые документы в свойстве Documents. Книга в приложение может быть добавлена только через добавление ссылки в совокупность Workbooks, а ссылка на открытый документ может быть получена различным образом (по имени, номеру, как ссылка на активный документ).

Рассмотрим создание двух рабочих документов. Для доступа к документам определим глобально объекты Word.Documents и Word.Document.

Изменим код в case 1:

О параметрах, передаваемых в методы Word.Application мы уже говорили, остановимся на методе Add.

Template — имя шаблона, по которому создается новый документ. Если значение не указано, то используется шаблон Normal.dot.

NewTemplate — при true новый документ открывается как шаблон. Значение по умолчанию — False.

wdNewBlankDocument — документ Word (по умолчанию);

wdNewEmailMessage — электронное сообщение;

В качестве параметра Template методу Add можно определить имя существующего документа или полное имя шаблона. Во втором случае мы привязываемся к пути, по которому инсталлированы приложения MicrosoftOffice, и в этом нет необходимости — тот же эффект достигается если используется параметр по умолчанию (напомним, Type — класс декларации типов, Type.Missing — отсутствие значения или значение по умолчанию. Кроме того, некоторые методы принимают необязательные параметры, которые не поддерживаются в C#, и в этом случае также используется Type.Missing, который является ссылочным типом — reference type). Использование в качестве Template имя существующего файла полезно когда потребуется добавлять какие либо данные в уже существующий документ или бланк.

В приведенном примере мы использовали для получения доступа к документу возвращаемое значение метода Add. Доступ можно получить и через его номер в массиве Documents:

В данном примере, при работе в Visual Studio 2003 активным становился (как не странно) первый, а не второй из созданных документов (нумерация от 1 в обратном порядке создания). Видно поэтому разработчики ввели метод get_Item(ref number). Но, все же, более удобнее использовать доступ к документу по имени, как показано в следующем примере:

Параграф 3. Сохранение документов

Документы Word можно сохранить программно и обычным для Word способом. В любом случае перед выходом из Word необходимо вызвать метод Quit. Если свойство Word.Application DisplayAlerts имеет значение true, Word предложит сохранить данные в том случае, когда после старта в документ были внесены какие либо изменения.

Для сохранения документа можно использовать методы Save(), SaveAs() и SaveAs2000. Метод Save() не имеет параметров и при его вызове будет отображено диалоговое окно Word «Сохранение документа». Напротив, метод SaveAs имеет множество параметров, большинство из которых можно не указывать, а использовать как параметры по умолчанию.

Рассмотрим параметры методов SaveAs() и SaveAs2000() (они имеют одинаковые параметры, однако при использовании на компьютере Office 2000 или OfficeXP рекомендуется использовать метод SaveAs2000, пример использования см. ниже):

Добавим к предыдущему примеру функцию сохранения и сохраним открытый документ a1.doc с именем a2.doc (на данном этапе можно поэксперементировать и с сохранением документа как текстового файла для формата wdFormatText и уяснить на примерах действие последних из рассмотренных параметров, которые в принципе повторяют установки окна преобразования файла см. Рис.4).

Рис.4. Окно преобразования файла.

Того же эффекта можно было добиться задав значения всех параметров (кроме имени файла) как Type.Missing.

Параграф 4. Открытие существующего документа

Для открытия существующего документа основными методом является метод Open (Open2000, Open2002).

Рассмотрим параметры метода Open. Методы Open2000, Open2002 имеют те же параметры, что и метод Open, но параметров у данных методов меньше. Этими методами рекомендуется пользоваться только при разработке приложений под конкретную версию Office (например, при использовании на компьютере Office 2000 или OfficeXP рекомендуется использовать метод Open2000).

В методе все параметры кроме имени файла могут иметь значение Type.Missing, то есть иметь значения по умолчанию, соответствующее открытию простого документа Word.

Пример открытия существующего документа:

Параграф 5. Вывод текстовой информации — объект и свойство Range

Создадим или откроем документ Word, например как в предыдущем примере. Объект worddocument на данном этапе соответствует объекту открытого документа и необходим нам для того, чтобы еще ниже опуститься по иерархии объектов Word. Следующим в иерархии объектов рассмотрим Word.Paragraph — параграф. Текстовая информация помещается и хранится в параграфах документа Word (объект Paragraph это один абзац текста).

Для манипуляции с параграфами определим глобально соответствующие объекты:

Любой документ Word всегда имеет хотя бы один параграф, даже если он пуст, то всегда присутствует курсор ввода. Убедиться в этом можно с помощью следующего фрагмента кода (как всегда для простоты мы выводим текстовую информацию в заголовок формы), который добавим к коду предыдущего примера:

Вывод текста выполняется не просто в параграф, а в диапазон параграфа — объект Range. Объект Range — это непрерывная область документа, включающая позицию начального и конечного символов. Для пустого параграфа или если начальная и конечная позиции диапазона совпадают — Range представляет курсор ввода.

В документе можно определить диапазон, вызовом метода Range с передачей ему начального и конечного значений позиций символов (при определении позиции номера символов считаются от 0 и включают все символы, в том числе и не печатные). Выделенный диапазон можно «подсветить», используя метод Select().

Есть возможность выделить весь текст всего документа следующим образом:

Объект Range позволяет выполнить вывод текста в выделенный участок и изменить параметры текста (шрифт, цвет, подчеркивание. ).

Помимо этого имеется возможность программно создать свой стиль и применить его либо ко всему документу, либо к объекту Range. Все возможности форматирования текста можно посмотреть в меню Word «Формат» пункт «Стили и форматирование». Изменять можно шрифт документа, параметры абзаца, параметры табуляции, границы, язык, рамки, нумерацию, сочетание клавиш. Они все доступны и программно за исключением возможности сохранять в шаблоне Word свой созданный стиль.

Принцип работы со стилями демонстрирует следующий фрагмент кода:

Шрифт и другие параметры форматирования текста можно задать как параметры по умолчанию для всего документа аналогично заданию стиля:

Свойства Content объекта Document определяет основную область документа (document’s main story), т. е. его содержимое без колонтитулов и других вспомогательных элементов.

Кроме объекта Range документа каждый параграф также имеет свойство Range, которое позволяет выводить текст и устанавливать его характеристики для параграфа.

Следующий пример демонстрирует возможности вывода текста используя свойство Range параграфа и объект Range документа (для демонстрации лучше код примера добавлять начиная с вывода 1го абзаца и т.д.):

Рис.5. Вывод текстовой информации.

Обратим внимание, что при использовании объекта Range вставляемый в выделенную область текст заменяет выделенный фрагмент и переносится в него полностью — не зависимо от величины диапазона.

Параграф 6. Вывод текстовой информации — объект Selection

Объект Selection представляет собой текущую выделенную область документа. Все действия, связанные с внесением в документ каких либо частных изменений в Word выполняются применительно к выделенным фрагментам. Программно это выполняется через объект Selection. Аналогично, как и при обычной работе с Word, при программном выводе необходимо вначале выделить фрагмент и, далее, выполнить требуемые действия над данным фрагментом (изменить шрифт, форматирование, напечатать и т.д.).

Объект Selection всегда присутствует в документе. Если ничего не выделено, он представляет курсор ввода (insertion point).

Для демонстрации использования объекта Selection сохраним в файле C:\a1.doc результаты выполнения кода предыдущего примера (Рис.4.).

Объект Selection может представлять блок, строку или столбец таблицы, курсор ввода, рисунок, фрейм, выделенный текст, или некоторую комбинацию объектов, которые можно определить через свойство Type объекта Selection (wdSelectionBlock, wdSelectionRow, wdSelectionColumn, wdSelectionIP, wdSelectionShape, wdSelectionInlineShape, wdSelectionNormal). Посколько свойства и методы у различных типов объектов Selection различны, то при применении того или иного метода или использования свойства рекомендуется выполнить проверку типа объекта Selection, например:

MoveLeft([Unit], [Count], [Extend]);

MoveRight([Unit], [Count], [Extend]);

MoveUp([Unit], [Count], [Extend]);

Рассмотрим эти методы.

6.1. Методы HomeKey и EndKey

WdLine — переход в начало (конец) строки. Значение по умолчанию.

WdStory — переход в начало (конец) документа.

WdColumn — переход в начало (конец) столбца таблицы.

WdMove — только переместить курсор. При использовании с wdLine перемещает курсор ввода в начало или конец строки, а при использовании с wdStory — в начало или конец документа.

Пример использования методов HomeKey и EndKey для выделения всего текста.

6.2. Методы MoveLeft и MoveRight

Методы позволяют перемещать курсор на указанное число и выделять в тексте указанное число символов, слов, ячеек или предложений.

wdCharacter — инкремент в единицах символов.

wdWord — инкремент в единицах слов.

wdCell — инкремент в единицах ячеек таблицы.

WdMove — только переместить курсор. При использовании с wdLine перемещает курсор ввода в начало или конец строки, а при использовании с wdStory — в начало или конец документа.

Пример использования методов MoveLeft и MoveRight (фрагмент кода вставлен в предыдущей пример после комментария «Непосредственно работа с объектом Selection»). Результат выполнения кода показан на Рис.6.

Рис.6. Пример использования методов MoveLeft и MoveRight

6.3. Методы MoveUp и MoveDown

Методы позволяют перемещать курсор на указанное число и выделять в тексте указанное число строк или абзацев.

wdLine — инкремент в единицах строк.

wdParagraph — инкремент в абзацах.

wdWindow — инкремент в единицах окна.

Остальные параметры аналогичны методам MoveLeft и MoveRight.

Пример выделения всего текста

6.4. Метод Move

Метод Move сворачивает выделение к последнему выделенному символу и перемещает курсор ввода на заданное параметром Count число символов, слов, строк, абзацев.

wdCharacter — инкремент в единицах символов.

wdWord — инкремент в единицах слов.

wdLine — инкремент в единицах строк.

6.5. Вывод текста

Для вывода текста с использованием объекта Selection используется его свойство Text или метод объекта TypeText. Метод, в зависимости от того, установлен в Word режим «вставка» или «замена» вставляет или пишет новый текст поверх имеющегося.

Примеры вывода текста приводятся ниже. В данных примерах сначала создаются и заполняются одинаковым шрифтом четыре абзаца, а затем в режиме вставки вставляется текст с использованием метода TypeText и свойства Text. Пример наглядно демонстрирует (Рис.7.) одинаковый характер действия при применении метода и свойства когда объект Selection представляет выделенный участок текста (строки 1 и 2) и различие при применении если он является курсором ввода (строки 3 и 4).

Рис.7. Пример вывода текста

Параграф 7. Работа с таблицами

7.1. Создание таблиц

Информация об объектах Table хранится в виде ссылок на таблицы документа в свойстве Tables. Набор ссылок Tables доступен из объектов Document, Selection и Range и даже из объекта Word.Table. Это значит, что и создавать таблицы можно с использованием любого из этих объектов (в любом — применительно к таблицам). Для создания таблиц используется метод Add:

Пример создания таблицы:

После того как таблица добавлена в документ, объект, соответствующий добавленной таблице можно получить по ее номеру в порядке добавления:

После того как мы добавили таблицу и получили объект Word.Table мы можем изменить стиль таблицы, например:

Пример создания двух таблиц (Рис.8.). В примере не только показано как можно создать таблицу, но и как разместить ее в пределах документа Word. Пример, как и ранее, выполняется при открытии чистого документа C:\a.doc, и, поэтому, здесь опускается часть кода, приводимая выше по открытию документа:

Рис.8. Пример создания таблиц

Обратим внимание на то, что курсор остался в первой ячейки последней добавленной таблицы. Это может понадобиться для начала вывода информации.

7.2. Вывод информации в ячейки таблиц

Таблица или Объект Word.Tableт состоит из ячеек — объектов Cell, ссылки на которые хранятся в наборе Cells данной таблицы. Ячейки таблицы считаются упорядоченными по координатам X и Y, нумерация с 1. Следующие строки кода ссылаются на ячейку, расположенную в первой строке и во втором столбце:

Для вывода текста в ячейку достаточно свойству Text объекта Word.Range присвоить значение типа string.

Добавим к приведенному выше коду примера следующие строки и продемонстрируем вывод текста в ячейки (Рис.9.):

Рис.9. Вывод текста в ячейки таблиц

В таблице и отдельно в ячейках можно изменять как параметры шрифта, так и любые другие параметры, которые можно изменить непосредственно из Word. Эти изменения доступны из свойства Range, которое имеется как у всей таблицы, так и у каждой ее ячейки. Например, вставив в предыдущем примере перед последней строчкой кода следующую строку, мы, тем самым, выполним вывод информации шрифтом, размер которого возрастает при возрастании номера строки:

Задать цвет шрифта можно следующими способами:

Аналогично можно задать и обводку ячеек:

Не составляет труда и выполнить заливку:

И последнее, что может понадобиться — выравнивание, которое выполняется аналогично выравниванию текста для параграфа текста:

7.3. Объединение ячеек таблиц

Параграф добавлен по просьбе назвавшего себя pasportbez1:

В примере использованы Reference:

Текст программы практически полностью без того, что создает студия:

Рис.10. Объединение ячеек

Параграф 8. Защита документа

Материал прислан Андреем Ковалевым и отредактирован автором.

Для защиты документа необходимо установить пароль. В качестве пароля используется любая переменная тира Object.

Соответственно функция в Microsoft.Office.Interop.Word.dll, определена как:

wdNoProtection — не применять защиту к документу;

wdAllowOnlyRevisions — только запись исправлений;

wdAllowOnlyComments — позволяет только добавлять коментарии к документу;

wdAllowOnlyFormFields — позволяет добавлять содержание через поля формы;

noReset — значение false, чтобы сбросить поля формы к значениям по умолчанию. Значение true, чтобы сохранить текущие значения полей формы, если документ защищен. Если Type не является wdAllowOnlyFormFields, аргумент NoReset игнорируется.

useIRM — определяет, следует ли использовать механизм управления правами на доступ к данным (IRM) для защиты документа от изменений.

Приведенный выше код, соответственно, разрешает только чтение документа и позволяет сохранить текущие значения полей формы.

Для снятия защиты используем:

Параграф 9. Диалоговые окна

Материал прислан Павлом Матрениным и отредактирован автором.

Многие действия в Word сопровождаются вызовом диалоговых окон (создание, открытие, сохранение и печать документа, изменение параметров шрифта, текста и т.д.).

Допустим, необходимо предоставить пользователю возможность отправить документ на печать прямо из вашего приложения. Можно использовать функцю Document.PrintOut, но у нее «устрашающее» количество параметров, как и у большинства функций связи C# с COM объектами. Мы это видели в функциях, использованных выше, см., например, функцию SaveAs и другие.

Решением этой проблемы может быть использование стандартных диалоговых окон Word, привычных пользователю и позволяющих сократить разработчику программный код.

Перейдем к примеру вызова диалогового окна печати документа:

Dialogs — это коллекция диалоговых окон Word (всего 296 элементов класса Microsoft.Office.Interop.Word.Dialog). Для того, что бы посмотреть все доступные диалоговые окна, кликните правой кнопкой мышки на WdWordDialog и выберите пункт меню «Go To Defination».

Элементы доступны по своим именам и имеют понятные названия, например:

Определение функции Dialog.Show в Microsoft.Office.Interop.Word.dll:

Параметр: «TimeOut» — время в миллисекундах, через которое окно будет закрыто автоматически. Практика показывет, что некоторые виды окон игнорируют это время и сами не закрываются. Это относится к сохранению, открытию, созданию нового документа. Окна для указания параметров «печати, параметров страницы, шрифта. » закрываются по истечении указанного времени.

Значение, которое возвращает функция Show, зависит от вида окна и от того, как оно было закрыто. Если вышло время, или пользователь нажал «OK», или «Закрыть», то «-1», если «Отмена», то «0», если «По умолчанию», то «1». А вот если окно закрыто крестиком, то может быть «-1» или «-2», зависит от самого окна. Других значений в своих опытах я не встречал (П.Матренин).

Обратите внимане на то, что попытка вызвать диалоговое окно, которое не может быть вызвано (например, сохранение, если пока не создано ни одного документа) приводит к возникновению исключительной ситуации.

Заметим также, что при Object time = 0 диалоговое окно появляется на не установленное время, иначе, программа будет ожидать действий пользователя с диалоговым окном.

Параграф 10. Основы анализа документов Microsoft Word

Материал прислан Сергеем Бабичевым , переведен на C# и отредактирован автором.

Очень часто людям приходится заниматься так называемой “обезьяньей работой”, нудным и совершенно нетворческим делом. Например, форматировать документы по некоторому образцу или проверять ссылки в разных документах друг на друга, искать соответствие товаров в разных накладных и ведомостях…. При этом очень легко ошибиться, что-то пропустить и на все это уходит много времени и сил.

Что бы автоматизировать труд и избавиться от лишней работы необходимо знать основы анализа и преобразования формы документов. В данном параграфе приводятся лишь некоторые возможности, предоставляемые OLE сервером Word, которые могут быть использованы при анализе и преобразования документов.

За основу примеров взяты наработки автора сайта из этого раздела. Имена переменных соответствуют именам, используемым в данной главе.

После написания кода запуска OLE сервера Word и открытия документа можно приступить к его анализу.

Если нужно просмотреть весь документ по параграфам, то можно сделать это таким циклом:

В функции vTestText мы можем просто выполнить анализ текста, например, на поиск некоторых слов (наименований товара. ).

Если мы поместим абзац в переменную wordrange, объявленную как

, то мы можем работать не только с текстом параграфа документа, но и определить, что представляет собой параграф и видоизменять его.

Функция vTestRange определим как:

Выделить нужный абзац для дальнейших его преобразований или анализа:

Выбрать текст абзаца в некоторую строковую переменную:

Определить номер страницы, на которой расположен абзац:

Другая константа — wdActiveEndAdjustedPageNumber, позволяет определить номер листа документа, когда нумерация в нем начинается не с первого номера, то есть используется своя нумерацию страниц документа.

Если абзац в таблице, то можно узнать номер строки и столбца таблицы:

Также этот код позволяет определить число строк и столбцов в таблице (методом перебора по максимальному числу номера строки и столбца).

узнать жирный (наклонный, подчеркнутый. ) или нет шрифт:

«-1» — жирный, «0» — нет;

Использовать объект Case, который предназначен для преобразования текста параграфов, но может быть использован и для анализа. Объект имеет множество свойств (даже для изменения текстов написанного иероглифами). Для нас могут быть интересны значения: wdLowerCase; wdUpperCase; wdNextCase; wdToggleCase; wdTitleWord; wdTitleSentence. Эти свойства позволяют соответственно перевести текст параграфа в нижний, верхний регистры, менять регистр, преобразовать первую букву каждого слова или предложения в верхний регистр.

для преобразования может быть использован код: F:\My_Site\C_Sharp\comword.html

Использовать объект PageSetup для анализа и форматирования документа:

Другие интересные свойства PageSetup, которые могут быть использованы для анализа и форматирования VerticalAlignment, RightMargin, TopMargin, LinesPage(строк на странице).

Использовать объект Fields для анализа документа и поиска в документе:

Определение принадлежности к оглавлению:

Первый и последний абзац его содержат в свойстве Fields ссылки на все остальные абзацы оглавления.

В первом поле содержится текст «TOC»

Встречаются документы, в которых абзац, не принадлежащий оглавлению содержит в себе поле с текстом «_Toc» (загадка). Поэтому проверять на вхождение абзаца в оглавление лучше по слову «PAGEREF». Кроме того, пустой абзац после оглавления, содержащий всего лишь символ перехода на новую строку (\r), также может содержать «PAGEREF». И, для того чтобы отличить текст оглавления от его завершения, может понадобиться проверка текста абзаца на наличие только «\r».

Определение наличия гиперссылки в абзаце.

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

Определение принадлежности абзаца к списку.

Для определения принадлежности абзаца к списку можно использовать свойство ListString. Правда это потребует знания кодов типов маркеров и нумерации списка, так как не все признаки линии в списках (некоторые черточки, например) приводятся к читаемым строковым символам, и кроме того, пользователь может назначить свои маркеры и нумерацию. Поэтому этот способ не всегда оправдан, разве что, для поиска в документе конкретных типов маркеров или конкретной нумерации.

wdListBullet = 0xF0B7,0xF0A7, 0x6А, 0xF076, F0D8,F0FC. ;

wdListSimpleNumbering = 0x2E, 0x29.

В заключение параграфа надо сказать, что формат документа Word не очень непростой и содержит огромное количество полей и свойств. Назначение многих из них непонятны, я думаю, даже программистам Microsoft (Сергеей Бабичев).

Параграф 11. Некоторые другие возможности по работе с Word

Из приложения, управляя сервером Word, можно делать практически все, что и из автономно запущенного Word. Однако, во всех этих, потрясающих объемом доступных действий и возможностей, обычно нет необходимости. Здесь приведены лишь несколько возможностей, которые помимо приведенного выше материала, когда либо потребовались автору в его практической работе.

Сменить ориентацию листа и установить поля.

Аналогично установить все другие параметры, доступные из меню Файл / Параметры страницы, а именно: Orientation, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter, HeaderDistance, FooterDistance, PageWidth, PageHeight, FirstPageTray, OtherPagesTray, SectionStart, OddAndEvenPagesHeaderFooter, DifferentFirstPageHeaderFooter, VerticalAlignment, SuppressEndnotes, MirrorMargins, TwoPagesOnOne, BookFoldPrinting, BookFoldRevPrinting, BookFoldPrintingSheets, GutterPos.

Скопировать любой документ или его выделенный диапазон (объект Ramge) в буфер обмена (например диаграмму Excel) или вставить в документ что-то из буфера обмена:

Изменить масштаб документа:

Изменить размер отображения окна:

Отменить любое количество выполненных из приложения действий:

Управлять параметрами окна Word, и прочитать установочные данные:

Поиск в документе:

Документ открыт и есть объект документа:

Вставка картинок в приложение (решение прислала Оксанчик):

Вставка разрава — на другой лист

Заключение. О богатстве возможностей

Еще раз повторим, сказанное в Главе 2, богатства возможностей по управлению запущенным приложением потрясающе. Практически, все, что можно сделать в автономно запущенном приложении доступно и из приложения на C#. Каждый может достаточно легко выполнить то или иное действия из приложения, если создаст макрос для этого действия, а, затем, «переведет» код VBA в коды C#.

И, в тоже время, по мнению автора, для начального этапа практической работы по формированию документов из приложения, изложенного материала вполне достаточно. Но, несмотря на это, раздел будет пополняться по мере возникновения какой либо проблемы в практической работе и ее разрешении. Если у Вас есть интересные находки — присылайте — с указанием авторства они будут включены в данный материал.

Tutorial: как портировать проект с Interop Word API на Open XML SDK

С выходом .NET5 дальнейшее развитие некоторых проектов оказалось под вопросом из-за сложности портирования. Если от небольших устаревших библиотек можно отказаться или найти им замену, то от зависимости Microsoft.Office.Interop.Word.dll очень сложно отказаться. Microsoft не планирует добавлять совместимость с .NET Core/5+, поэтому в этой статье мы рассмотрим, как создавать документы Word с помощью Open XML SDK.

Введение

Office Open XML, также известный как OpenXML или OOXML, представляет собой формат на основе XML для офисных документов, включая текстовые документы, электронные таблицы, презентации, а также диаграммы, фигуры и другой графический материал. В июне 2014 года Microsoft выпустила исходный код Open XML SDK на GitHub для работы с таким форматом.

У этой библиотеки есть серьёзные преимущества:

совместима с .NET 5+,

не требует установки Microsoft Office,

высокая скорость работы,

открытый исходный код.

Без минусов тоже не обошлось:

Эти минусы определённо дополняют друг друга. Собственно, это и стало причиной создания этого материала.

А вот открытый исходный код является большим плюсом. Если бы код COM-библиотек был открыт, сообщество разработчиков помогло бы с портированием на .NET Core/5+. Кроме привлечения сторонних разработчиков, публичный код даёт каждому возможность находить и исправлять ошибки и уязвимости или хотя бы сообщать о них. Качество публичных библиотек очень важно для всех проектов, которые могут их использовать. Например, мы проводили небольшой аудит кода Open XML SDK при первом знакомстве с этой библиотекой.

Боль разработчиков Office

Для продуктов Office было разработано очень много софта сторонними разработчиками. Это плагины для Word, Excel, Outlook. Многие компании наделали себе удобных плагинов и генераторов отчётов в формате Word. А 3 июля 2021 года произошло страшное – все тикеты про поддержку .NET 5+ в VSTO / COM, разбросанные по разным ресурсам, были в одночасье закрыты с комментарием представителей Microsoft подобного рода:

. The VSTO/COM Add-Ins platform is very important to Microsoft, and we plan to continue to support it in Office with .NET Framework 4.8 as the last major version. VSTO/COM Add-Ins cannot be created with .NET Core and .NET 5+. This is because .NET Core/.NET 5+ cannot work together with .NET Framework in the same process and may lead to add-in load failures. Microsoft will not be updating VSTO or the COM Add-in platform to use .NET Core or .NET 5+.

По их информации, поддержка .NET 5+ не предвидится. Вот одна из таких дискуссий, которая ещё долго не прекращалась после этого объявления: «Please port Visual Studio Tools For Office (VSTO) to .NET 5/7, to enable VSTO add-in development in C# in .Net 5/7».

Если у разработчиков плагинов совсем всё плохо – им предложили перейти на Office JavaScript API (совсем другой язык, API не позволяет делать и малую часть того, что было), то для создания документов из C# кода можно попробовать перейти на библиотеку Open XML SDK (nuget).

Основы

Прежде чем приступить к разбору примеров, стоит понять, с чем вообще работают эти две библиотеки и в чём состоит разница их подходов.

Word документ — это набор запакованных xml-документов. Все элементы структурированы под тегами.

Например, параграф внутри документа будет выглядеть примерно вот так:

Сборка Interop.Word немного абстрагируется от этой структуры и часто работает с некоторым участком – Range – документа. А Open XML SDK идёт по пути отражения внутренней структуры документа в самом коде. Параграфы <w:p>, участки текста <w:t> и всё остальное становятся объектами в самом коде. Если вы не создадите тело документа, параграф и других обязательных «родителей», то и добавлять текст будет некуда.

На скриншоте как раз изображена внутренняя структура основного файла для документа Word – document.xml. Этот файл содержит само наполнение документа.

Скриншот сделан в очень нужной для работы с Open XML утилите Open XML SDK 2.5 Productivity Tool. К моменту написания статьи эта утилита была удалена с сайта Microsoft, а в репозитории Open-XML-SDK добавлена ссылка на некий DocxToSource, который должен стать заменой устаревшего Productivity Tool. Однако эта замена всё ещё является прототипом, поэтому пока лучше постараться найти старый добрый Productivity Tool. Старая утилита позволяет просмотреть строение документа, познакомиться с автогенерированным кодом.

Также она позволяет сравнить два разных документа (и код для их создания, и их внутреннее строение).

Примеры

Для Interop.Word во всей статье примем такой псевдоним для удобства чтения:

Также для упрощения будем называть Open XML SDK просто Open XML.

Создание документа

Interop.Word:

Тут всё достаточно просто, но всё равно есть свои подводные камни. При работе с Interop мы взаимодействуем не просто с некоторым объектом в памяти, а с COM-объектом. Поэтому возникает необходимость завершать все процессы после окончания работы программы. Эта проблема не раз поднималась на Stack Overflow (1, 2), и ей предложено множество разных решений.

Есть решение с участием Marshal Class, являющимся частью InteropServices.

Однако в таком случае можно упустить какие-нибудь процессы.

Есть более надёжный вариант с обращением к GC:

Эти методы надо вызвать после того, как вся работа с COM-объектами будет завершена.

Если не завершить процессы, то при активном дебаге можно устроить себе такую ситуацию:

Но даже если в коде присутствует закрытие процессов после окончания работы, при прерывании программы вручную или её падении процесс останется запущенным. Такого недостатка нет при создании и работе с документом через Open XML.

Open XML:

Обратите внимание на добавление SectionProperties, они понадобятся нам позже.

Добавление параграфа

Interop.Word

Текст также можно сделать жирным или курсивным через параметр Font:

Изменить размер шрифта можно через:

Выравнивание текста выполняется через ParagraphFormat.Alignment:

Open XML:

В случае с Open XML жирным или курсивным текст можно сделать через:

Изменение размера шрифта в этом случае немного неинтуитивно, но согласуется с общей логикой работы с Open XML:

Важно перед этим не забыть добавить к параграфу свойства:

Вставка заголовка

Предположим, что нам нужно вписать в документ заголовок. В случае Interop.Word нужно всего лишь небольшое дополнение к вставке текста, чтобы получить заголовок:

Interop.Word:

В этом случае сначала задаём Range для записи нового текста и присваиваем ему стиль Heading 1.

Open XML:

Тут, казалось бы, всё очень похоже. Аналогично добавляем параграф и в случае с Open XML организуем нужную иерархию объектов.

Однако на самом деле в случае с Open XML коварным оказывается добавление стиля. Interop.Word работает с реальным полноценным документом, как если бы вы запустили Word и нажали создать. А вот Open XML работает только с тем, что было создано. И если вы добавляете текст документу, созданному через Open XML, а не через Interop.Word, то в нём будут отсутствовать, например, стили. Соответственно, никакого стиля Heading1 в таком документе не будет. Его нужно сначала добавить.

Удобнее всего добавлять нужный стиль при создании документа. Есть два варианта: перенести стили из готового Word-документа или добавить эти стили вручную.

В первом случае в документе, из которого будет браться стиль, нужно обязательно применить искомый стиль. Сам перенос требует достаточно много кода, благо, в официальной документации есть мануал на эту тему.

Для второго варианта нам поможет Productivity Tool для Open XML, упоминавшийся ранее. Чтобы получить код, нужный для добавления желаемого стиля, создаём чистый документ Word, используем в нём нужный стиль и «скармливаем» этот документ утилите. Далее через использование кнопки Reflect Code на /word/styles.xml в структуре документа мы получим реализацию метода GeneratePartContent. В нём мы ищем реализацию нужного стиля и всё, что с ним связано, включая StyleParagraphProperties, StyleRunProperties и т.д.

Для стиля Heading 1 нужный нам автосгенерированный код будет выглядеть примерно так:

Чтобы добавить перенесённый стиль к генерируемому документу, нужно создать набор стилей Styles и добавить стиль к набору. Далее к документу нужно добавить StyleDefinitionsPart и присвоить группу стилей. Выглядеть это будет вот так:

У себя мы решили использовать вариант с шаблонным документом, чтобы в будущем при появлении необходимости в каком-либо стиле нужно было лишь использовать его в шаблоне и работать с ним в коде вместо того, чтобы каждый раз рыться в ProductivityTool и копировать себе полотна кода с объявлением нужного стиля.

Смена ориентации страницы

Для нашего отчёта нам нужна была именно ландшафтная ориентация страницы.

Interop.Word:

У документа получаем нужный Range (страниц или всего документа) и задаём ландшафтную ориентацию.

Open XML:

C Open XML в этом случае всё не настолько абстрактно, как хотелось бы. Если вы инициализируете в PageSize только поле Orient, то ничего не изменится. Width и Height тоже нужно менять.

В дополнение к этому, ландшафтная ориентация обычно имеет другие размеры полей, поэтому, если у вас есть к ним требования, можно поправить их вот так:

Гиперссылки

Interop.Word:

Тут всё просто: как обычно, получаем нужный Range и добавляем гиперссылку. У метода Add много параметров, и можно сконструировать более сложную ссылку.

Open XML:

Из существенных отличий тут то, что url нужно сначала обернуть в Uri и создать связь url с гиперссылкой через AddHyperlinkRelationship. Потом при создании самой гиперссылки, нужно присвоить полю Id новой гиперссылки Id созданной ранее связи.

Картинки

Interop.Word:

Тут всё достаточно просто, а с Open XML всё оказалось крайне сложно.

Open XML:

Для добавления картинки необходимо соблюсти сложную иерархию объектов с определёнными параметрами. Хорошо, что есть документация на этот счёт. Поэтому пропустим код, требуемый для добавления картинки в этой статье. Разберём ещё один момент, который почему-то не упоминается в документации. Можете заметить, что в том коде нигде не передаётся размер картинки. Фиксируется её размер тут:

Если использовать этот код, то вместо нормальной картинки, будет вставлено малюсенькое изображение. Его реальный размер никак не изменится, но при отображении оно будет отмасштабировано до таких размеров:

Дело в том, что масштаб отображения картинки здесь завязан на такую вещь, как EMU (English Metric Units).

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

Тут мы получаем количество EMU на пиксель, приняв значение PPI за 96, и умножаем полученное значение на нужное количество пикселей для ширины и высоты. В итоге у наc есть нужная нам ширина и высота в EMU. Их мы и передаём как Cx и Cy для Extent и Extents:

Таблицы

Interop.Word:

Генерация таблицы через Interop.Word достаточно прямолинейна. Разберём пример, как можно было бы вставить таблицу из квадратной матрицы строк.

Параметры метода AddDefaultTableBehavior и AutoFitBehavior — как видно из их названия, отвечают за поведение таблицы при необходимости изменения размера под содержимое ячеек. Им присваиваются значения перечислений WdDefaultTableBehavior и WdAutoFitBehavior соответственно. Сам метод Add создаёт в документе таблицу с нужными нам параметрами.

Стиль к таблице можно применить следующим образом:

Также для красивого выделения первого столбика, если он является заголовочным, можно присвоить true полю oTable.ApplyStyleFirstColumn.

Расстояние между параграфами текста контролируется через oTable.Range.ParagraphFormat.SpaceAfter. Для компактного отображения таблицы можно использовать

Также можно устанавливать тип написания текста к строкам или колонкам:

Используя эти возможности, можно получить вот такую таблицу:

Open XML:

При создании таблицы с нуля с Open XML стоит помнить о том, что никаких ячеек или строк к моменту ввода данных не существует. Их нужно сначала создать, соблюдая внутреннюю иерархию.

Поэтому при проходе по матрице мы для каждой строки создаём TableRow, а потом для каждого элемента в строке создаём TableCell, куда добавляем новые Paragraph, Run и Text с соответствующим значением из матрицы. TableCellProperties лучше также добавить сразу, чем потом при дальнейшей работе с таблицей наткнуться на System.NullReferenceException при попытке добавить свойство ячейке.

Если мы не зададим в TableProperties ни стиля, ни Borders, то таблица будет выглядеть вот так

Границы таблицы формируются через TableBorders.

Перечисление BorderValues здесь задаёт стиль границ.

TableBorders нужно добавить к TableProperties через

Границы таблицы можно не задавать, если ей будет присвоен какой-нибудь стиль. Главное не забыть, что стиль сначала нужно добавить к документу.

Задаётся стиль достаточно просто:

Его так же, как и границы, нужно добавить к TableProperties:

Для того чтобы таблица заняла всю ширину страницы можно использовать TableWidth заданную следующим образом:

Значение 5000 тут взято «не из воздуха». Тип единицы ширины здесь мы задаём TableWidthUnitValues.Pct – единицы ширины в одну пятидесятую процента страницы или 0,02%. В итоге пять тысяч Pct это 100% ширины страницы.

Этот параметр добавляется к TableProperties аналогичным образом:

Важный момент: TableProperties должны быть добавлены к таблице до самих данных для того, чтобы они работали корректно. Их можно добавить и после других объектов, но тогда уже стоит использовать

Раскраска таблиц

Для формирования нашего отчёта нам нужно было раскрасить ячейки в некоторых таблицах документа.

Interop.Word:

где oTable – это созданная нами ранее таблица, i и j — это индексы нужной ячейки. Присваиваемое значение – перечисление WdColor.

Open XML:

где tc – это TableCell, с которой идёт работа. Полю Fill присваивается строка с Hex-значением цвета.

Разрыв страницы

В нашем случае отчёт генерируется последовательно, поэтому разрыв страницы нужно было вставить после последнего добавленного текста.

Interop.Word:

Open XML:

Тип разрыва меняется через перечисление BreakValues.

Footer/Header

Также нам нужны были футеры/хедеры в документе.

Interop.Word:

Через headerRange.Font можно поменять параметры текста, например размер, шрифт, цвет и т.д. А headerRange.ParagraphFormat.Alignment, как следует из названия, задаёт выравнивание текста. Это поле принимает значения WdParagraphAlignment.

Open XML:

Тут сложность состоит в том, что футер/хэдер сам по себе хранится в отдельном .xml файлике. Поэтому нам нужно связать хэдер/футер с содержанием документа через SectionProperties.

Если нужно, чтобы текст перезаписывался на новый при вызове метода добавления хедера, то вместо

Для футера нужно будет передать mainDocumentPart.FooterParts.

Заключение

Описанные методы работы с Open XML SDK можно собрать в библиотеку классов для внутреннего использования в компании, что мы и сделали. Создание Word документов стало даже удобнее, чем было с Word Interop API.

Здесь может возникнуть закономерный вопрос, есть ли готовые библиотеки на основе Open XML SDK для упрощённой работы с документами? Ответ – однозначно да. Но, к сожалению, поддержка таких библиотек быстро прекращается. Истории создания таких проектов все одинаковые: программисты начинают работать с Word, осознают неудобство существующей инфраструктуры, дорабатывают её — и некоторые библиотеки публикуются на GitHub. Даже если удастся найти относительно свежую версию подобной библиотеки, то, скорее всего, она была реализована под задачи конкретного проекта, и в вашем проекте всё равно будет неудобной в использовании. Плюс появится риск остаться с неподдерживаемой библиотекой.

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Victoria Khanieva, Svyatoslav Razmyslov. Tutorial: how to port a project from Interop Word API to Open XML SDK.

Компьютерная грамотность с Надеждой

Заполняем пробелы — расширяем горизонты!

Что такое Word: возможности, разные версии, бесплатные аналоги

Компьютер или ноутбук используется для работы с разными файлами: тексты, аудио, видео, графика, презентации и т.п. Программу, которая предназначена для работы с текстами, называют текстовым редактором. Что такое Word и при чем тут тексты?

Что такое Word

Word – это программа для набора и оформления текста. Такая программа является текстовым редактором.

В переводе с английского «Word» означает «слово».

В программе Word можно создавать тексты разной степени сложности: заметка, статья, реферат, курсовая или дипломная работа, книга.

О возможностях текстового редактора Word

Ранее для набора текста была предназначена печатная (или пишущая) машинка. И там, чтобы исправить что-то в тексте, приходилось перепечатывать заново всю страницу или даже несколько страниц. Правда, были дорогие пишущие машинки со специальной красящей лентой, которые позволяли делать незаметные исправления букв, замену одних букв текста на другие. Но такие машинки были большой редкостью.

Благодаря появлению компьютеров и текстовых редакторов работа с текстами сильно упростилась. В том числе, перестало быть проблемой внесение любых исправлений и дополнений в тексты.

В Word имеется много инструментов, чтобы красиво и наглядно оформить тексты. Для оформления текста можно выбрать размер, стиль и цвет шрифта. В текст можно вставить картинку, рисунок, фото, график, таблицу, список, формулы, диаграммы и ссылки на другие материалы.

Для удобства перемещения по тексту можно оформить заголовки и содержание текста, а также вставить колонтитулы и при необходимости добавить водяные знаки.

Файл, созданный в Word, можно легко распечатать на принтере. Для этого в программе имеется команда «Печать». Кстати, программа Word была одной из первых разработок, которая позволяет печатать страницы на принтере точно так, как они выглядят на экране. При печати не происходит сдвигов текста или перемещений картинок.

Если Вы хотите создать новый документ в программе Word, то увидите перед собой чистый лист бумаги на экране вашего устройства. Можно сразу печатать текст или вставить, например, картинку. Если закончилась первая страница, тогда автоматически будет добавлена следующая страница. В любое время можно открыть свой текст в этой программе, чтобы внести в него исправления, либо продолжить работу с ним.

Что в имени тебе моем?

Файлы Word называются документами. В том числе, название связано с форматом doc (сейчас это docx), что является сокращением от английского «document».

Какой формат у файлов, которые созданы в Word? Пользователь сохраняет текст, который он напечатал в программе Word, в формате docx. До Word 2003 включительно у файлов был старый формат doc. Также Ворд позволяет создавать и другие форматы документов, например, pdf. Данный формат широко распространен и применяется на практически всех устройствах, в том числе на мобильных телефонах, смартфонах, планшетах.

Приведем пример имени файла, созданного в Word. Такой файл получает имя, например, test1.docx или text5.docx.

Программа Word и ее бесплатные аналоги

Допустим, Вам прислали файл в формате docx. Как открыть такой файл, чтобы узнать его содержимое? Для этого на компьютере должна быть программа, которая откроет текстовый файл. Как быть, если нет такой программы? Надо ее установить, желательно с официального сайта.

Получается, что программа Word (или ее аналог) нужна, чтобы открыть файл docx, а также чтобы создать и редактировать документ. Иногда, правда, файлы с расширением .doc и .docx открываются и без установки программы Word, поскольку эти расширения стали признанным стандартом.

На официальном сайте Word можно использовать программу один месяц, а потом потребуется приобрести лицензию. Microsoft Office и программа Word из данного офисного пакета являются платными продуктами.

Есть различные бесплатные аналоги Word, выполняющие похожие фукции. Наиболее популярными из них являются Libre Office и Open Office. Между этими двумя офисными пакетами принципиальных отличий нет. При желании можно попробовать каждый из них, чтобы выбрать для себя подходящий вариант.

Если ведется совместная работа над каким-либо серьезным документом, то используют Microsoft Office. В этом случае не возникает проблем, что в общем документе, например, не совпадает форматирование из-за использования разных офисных программ.

Очень популярным и бесплатным является приложение Google Docs (docs.google.com). Работает с форматом docx и doc.

Огромный плюс состоит в том, что есть доступ из облака. И поэтому документ в Гугл Документах можно открыть на любом устройстве, имеющем выход в интернет.

Другой плюс в том, что в Гугл Документах есть бесплатный инструмент – голосовой ввод. Благодаря этой возможности можно говорить текст голосом, а компьютер (ноутбук, планшет. смартфон) будет записывать вашу речь в виде текста. Вы говорите, а на экране автоматически печатается ваша речь. И при этом не надо стучать по клавишам – замечательно!

Разные версии программы Word и пакета Microsoft Office

Word входит в состав офисного пакета Microsoft Office. Кроме текстового редактора, в этот пакет также входят электронные таблицы Excel, презентации PowerPoint, программа для работы с электронной почтой Outlook и др.

Word и Microsoft Word – это разные наименования одной и той же программы. Кому как удобно, тот так ее и называет. Она входит в состав офисного пакета Microsoft Office.

Microsoft – это компания, которая создала операционную систему Windows, а также разработала офисные программы Office. Была основана Биллом Гейтсом. Microsoft специализируется в области разработки программного обеспечения.

Первый офисный пакет появился в 1990 году, он назывался Office 1.0. Потом было создано много офисных программ. До сих пор используют версии Office 2003, Office 2007, Office 2010, Office 2013. Также выпущен Office 2016 и Office 2019. Причем, Office 2016 был представлен 29 июля 2015 года вместе с операционной системой Windows 10.

В соответствии с разными версиями Office есть разные версии текстового редактора: Word 2003, 2007, 2010, 2013, 2016, 2019. При переходе от версии 2003 к 2007 был сменен формат файлов от doc к docx. Формат .docx является более экономичным с точки зрения расходования памяти, он занимает меньше места на жестком диске компьютера или в памяти мобильного устройства, чем прежний формат .doc.

О возможностях пакета Microsoft Office

Файлы, созданные с помощью пакета Microsoft Office, хорошо «понимают» друг друга и отлично взаимодействуют между собой. Например, Word «дружит» с Excel. Допустим, если в табличном редакторе Excel создана какая-то таблица, то ее можно перенести через буфер обмена в редактор Word. И там, в текстовом редакторе появится эта же таблица с теми же данными внутри нее и с тем же форматированием, с теми же размерами или с пропорциональными размерами.

Также программы Word и Excel могут взаимодействовать наоборот. Созданная в текстовом редакторе Word таблица может быть перенесена в Excel, где ее данные можно дополнительно обработать с помощью дополнительных возможностей Excel.

Что интересно и полезно, так это то, что даже простые тексты можно переносить из текстового редактора в табличный редактор Excel. При этом текст автоматически преобразуется в таблицу. Эту таблицу можно будет обработать средствами Excel. А потом можно обратно преобразовать таблицу без особого труда Excel в текст Ворд. Таким нехитрым способом можно, например, упорядочить какой-то список, сделанный в текстовом редакторе.

Таким же образом, программа Word «дружит» с остальными программами, входящими в состав офисного пакета Microsoft Office. Поэтому тексты из Word можно помещать в презентации PowerPoint, отправлять по электронной почте с помощью программы Outlook и делать с ними многое другое.

Как правильно: текстовый редактор или текстовый процессор

Текстовый редактор – это программа для простого ввода текста и его редактирования. В Windows есть встроенная бесплатная программа Блокнот. Несмотря на кажущуюся простоту Блокнота, стоит отметить, что системные администраторы активно используют Блокнот в своей работе. Вызвано это тем, что текст, созданный в Блокноте, не имеет лишнего форматирования, это «чистый» текст.

Блокнот является примером простого текстового редактора. Но простота становится и некоторым ограничением в применении. Например, текст из Блокнота невозможно распечатать точно в таком же виде, как он виден на экране монитора – распечатка получится несколько иная.

Текстовый процессор, в отличие от редактора, предоставляет много дополнительных инструментов для работы с текстом. С этой точки зрения программу Word можно смело назвать текстовым процессором.

С другой стороны, в настоящее время Word принято называть текстовым редактором. Этот термин является более распространенным и понятным большинству пользователей по сравнению с несколько туманным понятием «текстовый процессор».

Таким образом, программу Ворд можно назвать и текстовым редактором, и текстовым процессором. Более популярным является название «текстовый редактор», которое прижилось у большинства пользователей.

Слово «Ворд» в русском языке

Word по-русски можно произнести как «Ворд». В русский язык много слов и терминов ИТ-сферы пришло из английского языка. Например, слово computer – «компьютер». В русском языке изначально использовались термины: ЭВМ – электронно-вычислительная машина, либо «вычислитель». Сейчас слово «компьютер» прочно обосновалось в русском языке.

Как Вы думаете, можно ли в русском языке склонять слово «Ворд» (например, «у меня нет Ворда»)?

На экзамене, конечно, лучше сказать, что не установлена программа Microsoft Word. В курсовой, дипломной или иной работе тоже надо писать, что не установлена программа Microsoft Word. Однако программе Word уже более 30 лет, и в разговорной речи слово «Ворд» уже давно склоняется.

Слово «Ворд», заимствованное из английского языка, в русском языке подчиняется правилам русского языка. «Ворд» имеет мужской род, единственное число и склоняется по падежам:

  • Именительный падеж (отвечает на вопросы: Кто? Что?) – ворд
  • Родительный падеж (отвечает на вопросы: Кого? Чего?) – ворда
  • Дательный падеж (отвечает на вопросы: Кому? Чему?) – ворду
  • Винительный падеж (отвечает на вопросы: Кого? Что?) – ворд
  • Творительный падеж (отвечает на вопросы: Кем? Чем?) – вордом
  • Предложный падеж (отвечает на вопросы: О ком? О чем?) – ворде

Мы говорим по-русски «ворд», и при этом понимаем не дословный перевод «слово», а многофункциональный текстовый редактор (текстовый процессор). Вот так, благодаря техническому прогрессу в IT-сфере, принципиально меняются значения вроде бы простых и понятных слов: «слово» («word») становится не просто словом, а удобной программой.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *