Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

РазработкаОфисныхЗаст

.pdf
Скачиваний:
5
Добавлен:
07.02.2016
Размер:
1.18 Mб
Скачать

171

При додаванні елементів керування під час розробки необхідно задати параметри розташування для кожного елемента.

При додаванні елемента керування Windows Forms програмними засобами із зазначенням діапазону, розмір елемента керування в комірці автоматично змінюється в межах вказаного діапазону.

Щоб змінити розміри елементів керування під час розробки, необхідно з контекстного меню елементу керування вибрати Формат, а потім в області Розташування вкладки Властивості об'єкту вибрати параметр Переміщати і змінювати розмір з коміркою.

При додаванні елемента керування Windows Forms під час виконання з зазначенням діапазону

Microsoft.Office.Interop.Excel.Range в якості розташування елемента,

розмір елемента керування автоматично змінюється при зміні клітинки, яка містить елемент.

Додати елемент керування в діапазон А1:

Microsoft.Office.Tools.Excel.Controls.Button control1 = this.Controls.AddButton (this.Range["A1", missing], "control1");

Можна скинути значення розташування і параметрів зміни розмірів елементів керування, присвоївши властивості Placement одне

знаступних значень XlPlacement: xlFreeFloating, xlMove,

xlMoveAndSize.

Для того щоб елемент керування не змінював розмір і не переміщався разом з коміркою:

control1.Placement = Microsoft.Office.Interop.Excel.XlPlacement.xlFreeFloating;

При виведенні на друк документа Microsoft Office Excel, який містить елементи керування Windows Forms, ці елементи керування видимі на роздрукованому аркуші. Для того щоб приховати елементи керування при виведенні аркуша на друк, необхідно для властивості PrintObject встановити значення False.

172

6.2.3.2 Зміна форматування аркуша з використанням елементів керування CheckBox

Розглянемо принципи використання прапорців для зміни форматування аркуша Microsoft Office Excel.

Додамо три елементів керування CheckBox (applyBoldFont, applyItalicFont, applyUnderlineFont) і текстовий вміст до елементу керування NamedRange.

Для додавання тексту в елемент керування NamedRange зі вкладки Елементи керування Excel панелі елементів перетягніть елемент керування NamedRange (textFont) в клітинку B9.

Далі напишіть код для форматування тексту при виборі певного параметра:

− у обробнику подій Click для прапорця applyBoldFont додайте наступний код:

private void applyBoldFont_Click (object sender, EventArgs e)

{ this.textFont.Font.Bold = this.applyBoldFont.Checked;

}

− у обробнику подій Click для прапорця applyItalicFont додайте наступний код:

private void applyItalicFont_Click (object sender, EventArgs e)

{ this.textFont.Font.Italic = this.applyItalicFont.Checked;

}

− у обробнику подій Click для прапорця applyUnderlineFont додайте наступний код:

private void applyUnderlineFont_Click (object sender, EventArgs e)

{if (this.applyUnderlineFont.Checked == true)

{this.textFont.Font.Underline = Excel.XlUnderlineStyle.xlUnderlineStyleSingle;

}

else

173

{ this.textFont.Font.Underline = Excel.XlUnderlineStyle.xlUnderlineStyleNone;

}

}

− додайте обробники подій для прапорців до події Startup:

this.applyBoldFont.Click += new EventHandler (applyBoldFont_Click);

this.applyItalicFont.Click += new EventHandler (applyItalicFont_Click);

this.applyUnderlineFont.Click += new EventHandler (applyUnderlineFont_Click);

6.2.3.3 Додавання елементів керування в аркуш під час виконання в проекті рівня застосування

Можна додавати елементи керування на будь-який відкритий аркуш за допомогою надбудови Excel. Розглянемо, як за допомогою стрічки надати користувачам можливість додавати на аркуш елементи керування Button, NamedRange і ListObject.

Створіть проект надбудови для Excel. Якщо проект орієнтований на .NET Framework 4, додайте посилання на

Microsoft.Office.Tools.Excel.v4.0.Utilities.dll.

Додайте призначену для користувача вкладку на стрічку Excel. Користувачі зможуть встановлювати прапорці на цій вкладці для додавання елементів керування на аркуш. Додайте у проект три прапорці з іменами та текстом на них: Button, NamedRange та

ListObject.

Керовані елементи керування можна додавати тільки до ведучих елементів, чинним як контейнери. Оскільки проекти надбудов працюють з будь-яким відкритим аркушем, перш ніж додати елемент керування надбудова перетворює аркуш на ведучий елемент або одержує існуючий ведучий елемент. Додайте код в обробник подій натискання кожного елемента керування, щоб створити ведучий елемент Worksheet на основі відкритого аркуша. Потім додайте елементи керування Button, NamedRange і ListObject в поточну вибрану область аркуша.

174

Замініть обробник подій Button_Click наступним кодом:

private void Button_Click (object sender, RibbonControlEventArgs e)

{ Worksheet worksheet = Globals.Factory.GetVstoObject ( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);

string buttonName = "MyButton";

if (((RibbonCheckBox) sender). Checked)

{Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;

if (selection!= null)

{Microsoft.Office.Tools.Excel.Controls.Button button = new Microsoft.Office.Tools.Excel.Controls.Button ();

worksheet.Controls.AddControl (button, selection, buttonName);

}

}

else

{worksheet.Controls.Remove (buttonName);

}

}

Замініть обробник подій NamedRange_Click наступним кодом:

private void NamedRange_Click (object sender, RibbonControlEventArgs e)

{ Worksheet worksheet = Globals.Factory.GetVstoObject ( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);

string Name = "MyNamedRange";

if (((RibbonCheckBox) sender). Checked)

{Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;

if (selection!= null) {worksheet.Controls.AddNamedRange (selection, Name);

}

}

else

{worksheet.Controls.Remove (Name);

}

}

175

Замініть обробник подій ListObject_Click наступним кодом.

private void ListObject_Click (object sender, RibbonControlEventArgs e)

{ Worksheet worksheet = Globals.Factory.GetVstoObject ( Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[1]);

string listObjectName = "MyListObject"; if (((RibbonCheckBox) sender). Checked)

{Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;

if (selection!= null)

{worksheet.Controls.AddListObject (selection, listObjectName);

}

}

else

{worksheet.Controls.Remove (listObjectName);

}

}

Додайте наступні інструкції в початок файлу коду стрічки.

using Excel = Microsoft.Office.Interop.Excel; using Microsoft.Office.Tools.Excel;

using Microsoft.Office.Tools.Excel.Extensions;

При збереженні й закритті аркуша елементи керування не зберігаються. Слід видалити програмними засобами все створені елементи керування Windows Forms перед збереженням аркуша, в іншому випадку при повторному відкритті цього аркуша з'явиться тільки контур цього елемента керування. Додайте в подію WorkbookBeforeSave код, який видаляє елементи керування Windows Forms з колекції створеного ведучого елементу.

Додайте наступний метод в клас ThisAddIn. Цей код отримує перший аркуш книги, а потім за допомогою методу HasVstoObject перевіряє, чи є на цьому аркуші створений об'єкт аркуша. Якщо створений об'єкт аркуша має елементи керування, то код отримує цей об'єкт і виконує ітерацію по колекції елементів керування, видаляючи елементи керування один за іншим:

176

void Application_WorkbookBeforeSave (Microsoft.Office. Interop.Excel.Workbook workbook, bool SaveAsUI, ref bool Cancel)

{ Excel.Worksheet worksheet = workbook.Worksheets[1] as Excel.Worksheet;

if (Globals.Factory.HasVstoObject (worksheet) && Globals. Factory.GetVstoObject (worksheet). Controls.Count> 0)

{ Worksheet vstoWorksheet = Globals.Factory.GetVstoObject (worksheet);

while (vstoWorksheet.Controls.Count> 0)

{ object vstoControl = vstoWorksheet.Controls[0]; vstoWorksheet.Controls.Remove (vstoControl);

}

}

}

Створіть обробник події WorkbookBeforeSave. Замініть метод

ThisAddIn_Startup наступним кодом.

private void ThisAddIn_Startup (object sender, System.EventArgs e)

{ this.Application.WorkbookBeforeSave += new Microsoft. Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler (Application_WorkbookBeforeSave);

}

6.3 Порядок виконання роботи

6.3.1Ознайомитися з рекомендованою літературою за темою

роботи.

6.3.2Створити проект рівня документа Word.

6.3.3Додати в проект стрічку і виконати її налаштування за допомогою конструктора.

6.3.4Створити елемент керування користувача.

6.3.5Додати елемент керування користувача у панель дій

документа.

6.3.6Додати елементи керування на стрічку у вкладку користувача та в елемент керування користувача, які дозволять запускати сценарії демонстрації роботи з елементами керування

Windows Forms у відповідності з завданням, узгодженим з

177

викладачем.

6.3.7Додати елементи керування Windows Forms у документ під час розробки.

6.3.8Продемонструвати додавання елементів керування Windows Forms у документ під час виконання.

6.3.9Виконати повторне створення динамічних ведучих елементів керування при відкритті документів.

6.3.10Виконати видалення оболонок елементів керування ActiveX при закритті документа.

6.3.11Налаштувати елемент керування таким чином, щоб він не змінював розмір і не переміщувався разом із коміркою у аркуші Excel (для проекту Excel).

6.3.12Приховати елементи керування на аркушах під час друку.

6.3.13Виконати тестування розробленої програми.

6.3.14Оформити звіт з роботи.

6.3.15Відповісти на контрольні питання.

6.4 Зміст звіту

6.4.1Тема та мета роботи.

6.4.2Короткі теоретичні відомості.

6.4.3Завдання на лабораторну роботу.

6.4.4Текст розробленого програмного забезпечення з коментарями.

6.4.5Результати роботи програмного забезпечення (розроблені проекти, зображення форм інтерфейсу користувача).

6.4.6Висновки, що містять відповіді на контрольні запитання, а також відображують результати виконання роботи та їх критичний аналіз.

6.5 Контрольні запитання

6.5.1Де можна розмістити елементи керування Windows Forms

удокументах Office?

6.5.2Чому в процесі завантаження документа або книги можлива поява старих елементів керування Windows Forms?

6.5.3Якими способами можна додати елементи керування Windows Forms у документ або книгу під час розробки у проекті рівня

178

документа?

6.5.5Як додати елемент керування Windows Forms у документ Office під час виконання у проекті рівня документа? У проекті рівня застосування?

6.5.6Які обмеження у методів і властивостей елементів керування Windows Forms, які використовуються у документах Office?

6.5.7Які особливості поведінки у елементів керування Windows Forms, які використовуються у документах Office?

6.5.8Які елементи керування Windows Forms, що використовуються у документах Office, називаються статичним, а які динамічними?

6.5.9У чому відмінність статичних та динамічних елементів керування Windows Forms, що використовуються у документах

Office?

6.5.10Чи можна видалити статичні елементи керування з документів Office?

6.5.11Як виконати збереження динамічних елементів керування

вдокументах Office?

6.5.12Чому необхідно видаляти оболонки ActiveX елементів керування перед закриттям документа?

6.5.13Які особливості елементів керування Windows Forms у аркушах Excel?

6.5.14Як зробити, щоб елемент керування не змінював свій розмір і не переміщався разом з коміркою у аркуші Excel?

6.5.15Як приховати елементи керування на аркушах під час

друку?

179

7 ЛАБОРАТОРНА РОБОТА №7 РОБОТА З PDF-ДОКУМЕНТАМИ

7.1 Мета роботи

Навчитися працювати з PDF документами.

7.2 Основні теоретичні відомості 7.2.1 Загальний огляд бібліотек

7.2.1.1 Бібліотека iTextSharp

Бібліотека iTextSharp підходить для веб та прикладних додатків. Дозволяє динамічно генерувати та/або маніпулювати PDF документами.

Розробники можуть використовувати iText для того, щоб:

передати PDF у браузер;

генерувати динамічні документи з XML файлів або бази

даних;

використовувати інтерактивні можливості PDF;

додавати закладки, кількість сторінок, водяні знаки тощо;

розділяти, об’єднувати та маніпулювати PDF сторінками;

автоматизувати заповнення PDF форм;

додавати цифровий підпис до PDF файлу.

7.2.1.2 Бібліотека Report.NET

Бібліотека Report.NET – потужна бібліотека, яка просто та зручно дозволяє генерувати PDF документи. Документ може бути створений за допомогою даних, які були отримані з будь-якого

ADO.NET data set.

Можливості бібліотеки:

дуже компактний код;

підтримує графічні об’єкти: текст, лінії, прямокутники, зображення jpeg;

легкість вирівнювання та трансформації графічних об’єктів;

ASP.NET може генерувати динамічні PDF сторінки;

XML документація (Comment Web Pages).

180

Наступні бібліотеки мають схожу з описаними функціональність:

PDFsharp;

SharpPDF;

PDFjet Open Source Edition (підтримує багату функціональність для малювання);

ASP.NET FO PDF;

PDF Clown.

7.2.2 Робота з бібліотекою iTextSharp

Для роботи з бібліотекою iTextSharp необхідно виконати наступні дії:

завантажити останню версію бібліотеки за посиланням http://sourceforge.net/projects/itextsharp/?source=navbar, видобути архів itextsharp-dll-core.zip, видобути файл itextsharp.dll;

створити проект Windows Forms;

додати посилання на бібліотеку.

Для цього у вікні Обозреватель решений натисніть правою кнопкою миші по Ссылки та оберіть пункт Добавить ссылку.

У вікні, що з’явиться, оберіть вкладку Обзор та знайдіть попередньо завантажений файл.

Додайте кнопку на формута текст обробника її натискання:

// створимо документ

var doc = new Document();

//відкриємо файловий потік. Створимо файл, якщо не існує PdfWriter.GetInstance(doc, new FileStream (Application.StartupPath + @"\Document.pdf", FileMode.Create));

doc.Open();

//додаємо зображення, вирівнюємо по центру iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(Application.StartupPath + @"/images.jpg");

jpg.Alignment = Element.ALIGN_CENTER; doc.Add(jpg);

//створимо та заповнимо таблицю

PdfPTable table = new PdfPTable(3);