Продолжение былинной саги про Office.Interop.Word. Самый простой способ вставить кусок текста в нужную часть Word-шаблона - использовать закладки. В отличие от текстовых меток закладки не надо искать, они невидимы и всегда имеют уникальное имя. Имея открытый в предыдущей части документ Word мы можем с легкостью получить диапазон-Range для закладки (bookmark).
Word.Range bookmarkRange = _document.Bookmarks.get_Item(ref bookmarkNameObj).Range;
Кроме банальной вставки текста хотелось бы его немного поформатировать - жирный/курсив, размер текста, выравнивание абзаца. Все это доступно через интерфейс Range.
Полужирное начертание через Range.Bold и курсив через Range.Italic. Надо заметить что вместо напрашивающегося bool эти свойства имеют тип int
_range.Bold = 1; _range.Italic = 1;
Выравнивание текста задается через перечисление WdParagraphAlignment и свойство ParagraphFormat.Alignment
_range.ParagraphFormat.Alignment == Word.WdParagraphAlignment.wdAlignParagraphLeft
Надо заметить, что при вставке текста в диапазон текущее выравнивание заменяется выравниванием по центру, так что его лучше сохранять и восстанавливать.
Размер шрифта через свойство Size интерфейса Font. Оно имеет редкий тип float, хотя в реальности размер шрифта задается целым числом.
_range.Font.Size = 11;
И напоследок рассмотрим вставку более объемного текста - нескольких абзацев подряд. Алгоритм достаточно прост, вставляем абзац, заполняем и форматируем, вставляем следующий. Используем метод Range.Collapse и перечисление CollapseDirection
Object collapseDirection = Word.WdCollapseDirection.wdCollapseEnd; _currentRange.Collapse(ref collapseDirection); _currentRange.InsertParagraphAfter();
Надо учитывать, что при заполнении вставленного таким образом абзаца текстом он сольется с предыдущим абзацом. Чтобы избежать этого надо при вставке текста добавлять к нему символ конца абзаца методом InsertParagraphAfter. Это не надо делать в случае вставки текста на текстовую метку, закладку или ячейку таблицы.
_range.InsertParagraphAfter();
Еще одно свойство диапазона используется в основном при работе с таблицами - речь идет о границах (например ячейки в таблице) задаваемых через перечисление WdLineStyle и интерфейс Borders (для таблицы в целом такой метод не работает). В принципе границы можно задавать для любого куска документа.
_range.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleNone;
- Работаем с MS Word из C#, часть 0, класс и тестовый проект-пример WinForms
- Работаем с MS Word из C#, часть 1. Открываем шаблон, ищем текст внутри документа
- Работаем с MS Word из C#, часть 2. Вставляем текст на закладку и форматируем
- Работаем с MS Word из C#, часть 3. Работа с таблицами
- Работаем с MS Word из C#, часть 4. Обьединяем несколько файлов в один, считаем количество страниц
- Microsoft.Office.Interop.Word Namespace
- Range Interface
Привет. Статьи очень мне помогли. Но вопрос есть к Вам. Как мне добавить Текущую дату, если на Закладке я добавил Контрол для вставки Даты через Sleector Date в Word?