Пошаговое руководство. Создание смарт-тега с помощью настройки уровня документа
В этом пошаговом руководстве демонстрируется создание смарт-тега в настройке уровня документа для Word. Смарт-тег распознает строки, содержащие значения температуры по Фаренгейту. Смарт-тег включает действие, которое преобразует значение в температуру по Цельсию и заменяет распознанный текст на строку, представляющую значение температуры по Цельсию.
Применение. Сведения этого раздела применяются к проектам уровня документа для Word 2007. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
Чтобы обеспечить работу данного смарт-тега, конечные пользователи должны включить поддержку смарт-тегов в приложении Word. Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание смарт-тега, распознающего регулярное выражение.
Создание действия, которое извлекает данные из смарт-тега и модифицирует распознанный смарт-тегом текст.
Примечание
На компьютере могут отображаться имена или расположения некоторых элементов пользовательского интерфейса Visual Studio, отличающиеся от указанных в дальнейших инструкциях.Эти элементы определяются используемой версией Visual Studio и ее параметрами.Дополнительные сведения см. в разделе Работа с параметрами.
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
-
Выпуск Visual Studio 2010, включающий средства разработки Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](https://msdn.microsoft.com/ru-ru/library/bb398242\(v=vs.100\)).
Word 2007.
Платформа .NET Framework 3.5.
Примечание
В случае платформы .NET Framework 4 необходимо написать другой код для создания смарт-тегов и действий.Дополнительные сведения см. в разделе Архитектура смарт-тегов.
Создание нового проекта
Сначала следует создать проект документа Word.
Создание нового проекта
Создайте проект документа Word 2007 с именем "Мой смарт-тег" в Visual Basic или C#. В мастере выберите Создать новый документ.
Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
Visual Studio откроет новый документ Word в режиме конструктора и добавит проект "Мой смарт-тег" в Обозреватель решений.
Настройка проекта
Проект должен содержать ссылку на библиотеку DLL смарт-тега и использовать регулярные выражения.
Настройка проекта
В меню Проект щелкните команду Добавить ссылку.
На вкладке .NET выберите Microsoft.Office.Interop.SmartTag и нажмите кнопку ОК. Выберите версию сборки 12.0.0.0.
В Обозревателе решений щелкните правой кнопкой мыши файл ThisDocument.vb (для Visual Basic) или ThisDocument.cs (для C#) и выберите в меню пункт Просмотреть код.
Добавьте следующую строку в начало файла.
Imports System.Text.RegularExpressions
using System.Text.RegularExpressions;
Создание смарт-тега
Чтобы смарт-тег мог находить и преобразовывать строки со значением температуры по Фаренгейту, добавьте регулярное выражение к списку терминов, распознаваемых тегом, и создайте действие, которое станет доступным пользователю после щелчка смарт-тега.
Создание смарт-тега
Замените обработчик событий ThisDocument_Startup класса ThisDocument следующим кодом. Этот код создает объект SmartTag, представляющий смарт-тег, и добавляет регулярное выражение к списку терминов, распознаваемых смарт-тегом.
WithEvents action1 As Microsoft.Office.Tools.Word.Action Private Sub ThisDocument_Startup(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Startup 'Use the following line of code in projects that target the .NET Framework 4. Dim smartTag1 As Microsoft.Office.Tools.Word.SmartTag = _ Globals.Factory.CreateSmartTag( _ "www.microsoft.com/Demo#DemoSmartTag", _ "Demonstration Smart Tag") 'In projects that target the .NET Framework 3.5, use the following line of code. 'Dim smartTag1 As New Microsoft.Office.Tools.Word.SmartTag( _ ' "www.microsoft.com/Demo#DemoSmartTag", _ ' "Demonstration Smart Tag") smartTag1.Expressions.Add( _ New Regex("(?'number'[+-]?\b[0-9]+)?\s?(F|f)\b"))
private Microsoft.Office.Tools.Word.Action action1; private void ThisDocument_Startup(object sender, System.EventArgs e) { // Use the following line of code in projects that target the .NET Framework 4. Microsoft.Office.Tools.Word.SmartTag smartTag1 = Globals.Factory.CreateSmartTag( "www.microsoft.com/Demo#DemoSmartTag", "Demonstration Smart Tag"); // In projects that target the .NET Framework 3.5, use the following line of code. //Microsoft.Office.Tools.Word.SmartTag smartTag1 = // new Microsoft.Office.Tools.Word.SmartTag( // "www.microsoft.com/Demo#DemoSmartTag", // "Demonstration Smart Tag"); smartTag1.Expressions.Add(new Regex( @"(?'number'[+-]?\b[0-9]+)�?\s?(F|f)\b"));
Создайте новое действие Action и добавьте его к свойству Actions смарт-тега. Действие Action представляет собой элемент, который пользователь может выбрать в меню смарт-тега.
'Use the following line of code in projects that target the .NET Framework 4. action1 = Globals.Factory.CreateAction( _ "Convert to Celsius") 'In projects that target the .NET Framework 3.5, use the following line of code. 'action1 = New Microsoft.Office.Tools.Word.Action( _ ' "Convert to Celsius") smartTag1.Actions = _ New Microsoft.Office.Tools.Word.Action() {action1}
// Use the following line of code in projects that target the .NET Framework 4. action1 = Globals.Factory.CreateAction( "Convert to Celsius"); // In projects that target the .NET Framework 3.5, use the following line of code. //action1 = new Microsoft.Office.Tools.Word.Action( // "Convert to Celsius"); smartTag1.Actions = new Microsoft.Office.Tools.Word.Action[] {action1};
Присоедините смарт-тег к документу путем добавления SmartTag к свойству VstoSmartTags. В C# присоедините обработчик событий к событию Click действия.
Me.VstoSmartTags.Add(smartTag1) End Sub
this.VstoSmartTags.Add(smartTag1); action1.Click += new Microsoft.Office.Tools.Word.ActionClickEventHandler( action1_Click); }
Создание обработчика событий для действия
Обработчик событий извлекает значение температуры по шкале Фаренгейта, используя ключ number, который находится в контейнере свойств смарт-тега. Затем обработчик событий преобразует значение температуры по Фаренгейту в температуру по Цельсию и заменяет распознанную строку.
В этом примере ключ number идентифицирует захватывающую группу из регулярного выражения, назначенного смарт-тегу. Дополнительные сведения о контейнерах свойств и регулярных выражениях в смарт-тегах см. в разделе Архитектура смарт-тегов.
Создание обработчика событий
Скопируйте в класс ThisDocument следующий код.
Private Sub action1_Click(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _ Handles action1.Click Dim value As String = e.Properties.Read("number") Dim fahrenheit As Double = System.Convert.ToDouble(value) Dim celsius As Integer = Fix(fahrenheit - 32) * 5 / 9 e.Range.Text = celsius.ToString() + "C" End Sub
void action1_Click(object sender, Microsoft.Office.Tools.Word.ActionEventArgs e) { string value = e.Properties.get_Read("number"); double fahrenheit = System.Convert.ToDouble(value); int celsius = (int)(fahrenheit - 32) * 5 / 9; e.Range.Text = celsius.ToString() + "�C"; }
Тестирование приложения
Теперь можно проверить работу документа, чтобы убедиться, что смарт-тег преобразовывает температуру по шкале Фаренгейта в температуру по шкале Цельсия.
Проверка рабочей книги
Необходимо включить поддержку смарт-тегов в Word.
Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.
Нажмите клавишу F5 для запуска проекта.
Введите строку, которая соответствует регулярному выражению смарт-тега, например, 60F, 60° F или 60 F.
Примечание
Чтобы ввести символ градусов (°), нажмите и удерживайте клавишу ALT и наберите на цифровой клавиатуре 248.
Щелкните значок смарт-тега, который отображается над распознанной строкой, и затем выберите пункт меню Convert to Celsius.
Убедитесь, что исходная строка заменена на новую (т.е. на значение температуры по шкале Цельсия).
См. также
Задачи
Практическое руководство. Разрешение смарт-тегов в Word и Excel
Практическое руководство. Добавление смарт-тегов в документы Word
Практическое руководство. Добавление смарт-тегов в книги Excel
Пошаговое руководство. Создание смарт-тега с помощью надстройки уровня приложения