using Microsoft.Office.Interop.Word;
using Microsoft. Office. Interop. Word; Для работы с Word нам понадобятся объекты, представляющие приложение и документ Word. Объявите их в классе формы следующим образом:
Microsoft. Office. Interop. Word. Application wordApp; Microsoft. Office. Interop. Word. Document wordDoc;
Для формирования документов будут использоваться несколько дополнительных функций. Первая из них, OpenDocument, предназначена для создания нового документа Word на основе заданного шаблона. Имя файла шаблона передается функции в качестве параметра. Текст метода:
private void OpenDocument(string FileName) { //открываем Word wordApp = new Microsoft. Office. Interop. Word. Application(); //создаем документ на основе шаблона Object template = System. Windows. Forms. Application. StartupPath + @" \docs\" + FileName; Object newTemplate = false; Object documentType = Microsoft. Office. Interop. Word. WdNewDocumentType. wdNewBlankDocument; Object visible = true; //добавляем документ в список документов приложения wordDoc = wordApp. Documents. Add(ref template, ref newTemplate, ref documentType, ref visible); }
Следующие три метода предназначены для поиска и замены в тексте документа. С их помощью и будут заменяться метки в шаблоне на конкретные значения, полученные из программы.
public void ReplaceText(string word, string repl) { // Смещаем выделение к началу документа Object unit = Microsoft. Office. Interop. Word. WdUnits. wdStory; Object extend = Microsoft. Office. Interop. Word. WdMovementType. wdMove; wordApp. Selection. HomeKey(ref unit, ref extend); //создаем объект Find для поиска текста Microsoft. Office. Interop. Word. Find fnd = wordApp. Selection. Find; //очищаем его настройки fnd. ClearFormatting(); //задаем текст для поиска fnd. Text = word; //очищаем настройки для замены fnd. Replacement. ClearFormatting();
//задаем текст для замены fnd. Replacement. Text = repl; //запускаем процесс поиска и замены ExecuteReplace(fnd); } private Boolean ExecuteReplace(Microsoft. Office. Interop. Word. Find find) { return ExecuteReplace(find, Microsoft. Office. Interop. Word. WdReplace. wdReplaceAll); } private Boolean ExecuteReplace(Microsoft. Office. Interop. Word. Find find, Object replaceOption) { Object findText = Type. Missing; Object matchCase = Type. Missing; Object matchWholeWord = Type. Missing; Object matchWildcards = Type. Missing; Object matchSoundsLike = Type. Missing; Object matchAllWordForms = Type. Missing; Object forward = Type. Missing; Object wrap = Type. Missing; Object format = Type. Missing; Object replaceWith = Type. Missing; Object replace = replaceOption; Object matchKashida = Type. Missing; Object matchDiacritics = Type. Missing; Object matchAlefHamza = Type. Missing; Object matchControl = Type. Missing; return find. Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildcards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWith, ref replace, ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl); }
Для запуска процесса формирования приглашения поместите на главную форму программы кнопку «Приглашение». Текст ее обработчика с комментариями приведен ниже: private void InvitationButton_Click(object sender, EventArgs e) { //если выбран человек для формирования приглашения if (dataGridView1. SelectedRows. Count! = 0) { //создаем форму для ввода доп. информации Form2 form = new Form2(); //если мы ввели данные и нажали ОК, то формируем документ if (form. ShowDialog() == DialogResult. OK) { //создаем новый документ на основе шаблона OpenDocument(" приглашение. docx" ); //получаем из БД строку с выбранным человеком DataRow row = dataSet1. Contacts. Rows[RowId]; //получаем его имя и фамилию string FIO = row[" Name" ]. ToString() + " " + row[" Fam" ]. ToString(); //заменяем метки в шаблоне конкретными значениями ReplaceText(" < FIO> ", FIO);
ReplaceText(" < Holiday> ", form. textBox1. Text); ReplaceText(" < Date> ", form. dateTimePicker1. Value. ToLongDateString()); ReplaceText(" < Time> ", form. maskedTextBox1. Text); ReplaceText(" < Place> ", @form. textBox2. Text); //делаем приложение Word видимым wordApp. Visible = true; } } else MessageBox. Show(" Выберите человека", " Ошибка" ); }
Внешний вид сформированного программой приглашения будет выглядеть примерно так (рисунок 3. 4):
Рисунок 3. 4 – Внешний вид сформированного в Word документа Далее создадим документ, позволяющий передавать в Word информацию о людях, имеющих более одного номера телефона. Данные должны будут отображаться в виде таблицы из трех столбцов: порядковый номер строки, ФИО человека, номер его телефона.
Файл шаблона для этого задания называется «список. docx» и выглядит следующим образом (рисунок 3. 5):
Рисунок 3. 5 – Шаблон документа «список. docx»
В данном шаблоне метка < Today> будет заменена на дату формирования документа, а метка < Table> представляет собой место вставки в документ таблицы.
На главной форме программы создается еще одна кнопка для формирования данного документа. Ее обработчик с комментариями приведен ниже:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|