Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_укр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

1. Операції з Com-Сервером Microsoft Excel

Функція, що реалізує механізм доступу до COM-об'єкту, знаходиться у модулі Comobj, який повинен бути підключений у коді модуля.

Потім потрібно описати змінну (краще глобальну) для зберігання посилання на сервер у вигляді:

var e:variant;

Після опису змінної можна створити новий об'єкт COM-сервера за допомогою команди:

e:=createoleobject('excel.application');

Після виконання цього оператора додаток Excel запуститься, але його вікно не відобразиться на екрані монітора. У диспетчері завдань у списку процесів можна побачити, що процес excel.exe запущений і знаходиться в пам'яті комп'ютера.

Щоб вікно програми стало видимим необхідно встановити властивість:

e.visible:=true;

При формуванні звітів властивість Visible краще встановити в значення True тільки для відображення повністю створених книг. Так можна скоротити час створення звітів і підвищити продуктивність роботи додатків.

Запуск або підключення до Excel

Ми розглянули приклад створення нового об'єкта для запуску копії Microsoft Excel. Однак такий підхід має недолік: якщо Excel уже буде запущений користувачем, то виклик функції createoleobject('excel.application') запустить нову копію програми, що веде до нераціональної витрати пам'яті комп'ютера. Для вирішення даної проблеми потрібно мати на увазі, що є функція, яка не створює об'єкт, а підключається до вже існуючого:

e:=getactiveoleobject('excel.application');

Тому перед використання COM-сервера Excel доцільно виконувати створення об'єкта або підключення до об'єкта залежно від стану програми Excel. Правильний підхід при звертанні до Excel наступний:

try

    //підключаємося до excel

    e:=getactiveoleobject('excel.application');

except

    //якщо підключення не вдалося (excel не запущений)

    //створюємо новий об'єкт, запускаючи excel

    e:=createoleobject('excel.application');

end;

Зазначений код за замовчуванням коректно працює тільки при запуску exe файлу програми. При запуску проекту буде видаватися помилка.

Для роботи коду під час запуску проекту потрібно виконати настроювання Delphi: виконайте команду Tools-Debugger Options, на закладці Language Exception зніміть прапорець Stop On Delphi Exception. Зверніть увагу, що залишати дане настроювання виключеним не рекомендується, тому що після цього Delphi не буде видавати інформативних повідомлень про помилки при невірній роботі програм.

 

  1. Робота із книгами в Microsoft Excel

Отже, об'єкт Excel завантажений у пам'ять комп'ютера, і в нас є доступ до нього через змінну e:variant. Об'єкт має методи, за допомогою яких можна створювати, відкривати й зберігати книги.

Створення книги

Для створення книги використовують метод:

e.workbooks.add;

Після виконання цього методу буде створена книга на підставі стандартного шаблону.

Викликати методу add можна з аргументом ( ім'ям файлу шаблону). У цьому випадку створюється документ по шаблонові. Для своїх додатків можна створити додаткові шаблони документів, наприклад шаблон форми платіжного доручення або податкової декларації. Надалі, використовуючи метод add із зазначенням на шаблон, легко створити потрібний звіт, заповнюваний інформацією із програми. Використання шаблонів дозволить створювати гнучкі й зручні для користувача додатки в середовищі Delphi.

Приклад. Нехай у теціці із програмою є текака шаблонів з ім'ям Shablon, а в ній файл шаблону з ім'ям anketa.xlt. Створимо нову книгу на основі шаблону.

e.workbooks.add(extractfilepath(application.exename)+'shablon\anketa.xlt');

Збереження книги

Можна програмно зберегти створену книгу на диск. Для цього використовується метод виду:

e.activeworkbook.saveas(filename:='ім'я файлу'[,password:='пароль']);

Метод має аргументи:

  • filename – ім'я файлу;

  • password – пароль на відкриття файлу.

  • filename – ім'я файлу;

  • password – пароль на відкриття файлу.

Наприклад: відкриємо збережений раніше файл:

e.workbooks.open(filename:=extractfilepath(application.exename)+'output\отчет.xls');

Якщо файл має пароль, то його можна відкрити так:

e.workbooks.open(filename:=extractfilepath(application.exename)+'output\отчет.xls',password:=’123456’);

Закриття книги й додатка Excel

Якщо книга збережена, то її можна закрити за допомогою методу:

e.activeworkbook.close;

Після закриття книги можна закрити й сам додаток Excel. Для цього використовують два оператори:

e.quit;

e:=unassigned;

Використовуючи методи роботи із книгами можна організовувати фонове створення файлів без відображення їх на екрані.

Приклад. На підставі шаблону anketa.xlt з теки shablon створити нову книгу. Зберегти книгу з ім'ям отчет.xls у теку output. Після збереження видати повідомлення про успішне створення файлу й запросити користувача відкрити файл для перегляду. Якщо відповідь позитивна, то файл відкривається, якщо негативна, то Excel закривається.

try

    //підключаємося до excel

    e:=getactiveoleobject('excel.application');

except

    //якщо підключення не вдалося (excel не запущений)

    //створюємо новий об'єкт, запускаючи excel

    e:=createoleobject('excel.application');

end;

//створюємо нову книгу на основі шаблону

e.workbooks.add(extractfilepath(application.exename)+'shablon\anketa.xlt');

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

e.activeworkbook.saveas(extractfilepath(application.exename)+'output\отчет.xls');

//видаємо запит на відкриття збереженого файлу

if application.messagebox(Файл збережено. відкрити?','Запит',

mb_yesno+mb_iconquestion)=idyes then

    //якщо відповідь так, робимо excel видимим

    e.visible:=true

else

//якщо відповідь ні, закриваємо документ і excel

begin

    e.activeworkbook.close;

    e.quit;

    e:=unassigned;

end;

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]