Обработка документов

Создание надстройки VSTO Word для формирования шаблонов документов. Часть 2

Время прочтения: 3 мин.

В прошлой статье мы остановились на формировании шаблона распоряжения после нажатия кнопки «Пример шаблона» на ленте:

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

Для этого создадим на нашей ленте новую группу:

Теперь в окне свойств элементов управления изменим название группы Group2:

group2.Label =”Пункты распоряжения”.

Теперь в этой группе создадим новую кнопку и свойство Label назначим «Добавить новый пункт».

Вот что должно получиться:

Теперь создадим событие Click для кнопки. Кнопка должна добавлять в конец таблицы новую строку. В первом столбце должен заполняться номер пункта, который равен количеству строк в таблице, во втором столбце должен создаться новый элемент управления содержимым. Прежде чем добавлять новую строку в таблицу, программа должна убедиться, что данный документ содержит только одну таблицу и в ячейке первой строки и первого столбца находится текст «1.». Можно добавить и другие условия для проверки, но мы ограничимся этим.

Код:

//кнопка "Добавить новый пункт"
        private void button2_Click(object sender, RibbonControlEventArgs e)
        {
            int numTbl = 0;
            Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
            // проверяем что количество таблиц в документе =1
            if (doc.Tables.Count == 1)
            {
                //проверяем содержимое в 1 столбце и 1 строке
                if (doc.Tables[1].Cell(1, 1).Range.Text.Length >= 1 && doc.Tables[1].Cell(1, 1).Range.Text.Substring(0, 2) == "1.") numTbl = 1;
            }
            // если найдена 1 таблица, то добавляем новую строку и новый content control
            if (numTbl == 1)
            {
                Word.Table tbl = doc.Tables[numTbl];
                //добавляем новую строку
                tbl.Rows.Add();
                //находим новое количество строк
                int cntRows = tbl.Rows.Count;
                //заполняем ячейку в новой строке в 1 столбце
                tbl.Cell(cntRows, 1).Range.Text = cntRows.ToString()+".";
                //добавляем content control во 2 столбец в новой строке
                Word.Range r = tbl.Cell(cntRows, 2).Range;
                AddContentControlText(r, "TextPunkt" + cntRows.ToString(), "Пункт распоряжения", "Пункт распоряжения");
            }
            //выдается сообщение, если кол-во таблиц не равно 1
            else MessageBox.Show("В документе не найден раздел с пунктами распоряжения!");
        }

Запустим программу. При нажатии на кнопку «Пример шаблона», формируется шаблон распоряжения.

Теперь нажмем на кнопку «Добавить новый пункт». Мы видим, что добавился новый пункт.

Нажимаем еще раз:

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

Советуем почитать