Программное вставка текста в документы Word
Существует три основных способа вставки текста в документы Microsoft Office Word:
вставка текста в диапазон;
замена текста в диапазоне на новый текст;
использование метода TypeText объекта Selection для вставки текста в позиции курсора или выделения.
Примечание.
Вы также можете вставить текст в элементы управления содержимым и закладки. Дополнительные сведения см. в разделе "Элементы управления содержимым" и элемент управления "Закладка".
Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.
Примечание.
Заинтересованы в разработке решений, которые расширяют возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшое пространство по сравнению с надстройками и решениями VSTO, и вы можете создавать их практически с помощью любой технологии веб-программирования, таких как HTML5, JavaScript, CSS3 и XML.
Вставка текста в диапазон
Используйте свойство Text объекта Range для вставки текста в документ.
Вставка текста в диапазон
Укажите диапазон в начале документа и вставьте текст New Text.
Следующий пример кода можно использовать в настройке на уровне документа.
object start = 0; object end = 0; Word.Range rng = this.Range(ref start, ref end); rng.Text = "New Text";
Следующий пример кода можно использовать в надстройке VSTO. В этом примере кода используется активный документ.
Выберите объект Range , который был расширен от одного символа до длины вставленного текста.
Замена текста в диапазоне
Если указанный диапазон содержит текст, весь текст в диапазоне заменяется на вставленный текст.
Замена текста в диапазоне
Создайте объект Range , состоящий из первых 12 символов в документе.
Следующий пример кода можно использовать в настройке на уровне документа.
Следующий пример кода можно использовать в надстройке VSTO. В этом примере кода используется активный документ.
Замените эти символы строкой New Text.
Выберите диапазон.
Вставка текста с помощью TypeText
Метод TypeText вставляет текст в выделение. TypeText ведет себя по-разному в зависимости от параметров, заданных на компьютере пользователя. Код в следующей процедуре объявляет объектную переменную Selection , а также отключает параметр Overtype , если он включен. Если параметр Overtype включен, любой текст рядом с курсором будет перезаписан.
Вставка текста с помощью метода TypeText
Объявите переменную объекта Selection.
Отключите параметр Overtype , если он включен.
Проверьте, находится ли текущее выделение у точки вставки.
Если это так, код вставляет предложение с помощью TypeText, а затем знак абзаца с помощью метода TypeParagraph .
Код в блоке ElseIf проверяет, является ли выделение обычным блоком выделения. Если это так, другой блок If проверяет, включен ли параметр ReplaceSelection . Если это так, код использует метод Collapse выделения, чтобы свернуть его до точки вставки в начале выделенного блока текста. Вставьте текст и знак абзаца.
else if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal) { // Move to start of selection. if (Application.Options.ReplaceSelection) { object direction = Word.WdCollapseDirection.wdCollapseStart; currentSelection.Collapse(ref direction); } currentSelection.TypeText("Inserting before a text block. "); currentSelection.TypeParagraph(); }
Если выделение не является точкой вставки или блоком выделенного текста, код в блоке Else не выполняет никаких действий.
Можно также использовать TypeBackspace метод Selection объекта, который имитирует функциональные возможности клавиши Backspace на клавиатуре. Но когда дело доходит до вставки и изменения текста, объект Range предоставляет больше возможностей для управления.
В следующем примере показан полный код. Чтобы использовать этот пример, запустите код из класса
ThisDocument
илиThisAddIn
в своем проекте.private void SelectionInsertText() { Word.Selection currentSelection = Application.Selection; // Store the user's current Overtype selection bool userOvertype = Application.Options.Overtype; // Make sure Overtype is turned off. if (Application.Options.Overtype) { Application.Options.Overtype = false; } // Test to see if selection is an insertion point. if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) { currentSelection.TypeText("Inserting at insertion point. "); currentSelection.TypeParagraph(); } else if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal) { // Move to start of selection. if (Application.Options.ReplaceSelection) { object direction = Word.WdCollapseDirection.wdCollapseStart; currentSelection.Collapse(ref direction); } currentSelection.TypeText("Inserting before a text block. "); currentSelection.TypeParagraph(); } else { // Do nothing. } // Restore the user's Overtype selection Application.Options.Overtype = userOvertype; }