Робота з msword з delphi - нестандартні звіти - delphi sources faq

Нестандартні звіти - хто і навіщо цим займається

На питання "навіщо" ми, думаю, дали вже достатньо аргументації. Але все-таки це не все, зупинимося на ще неописаних проблемах.

Перше питання, яке нам зазвичай задають - це де я зможу це використовувати крім як на підприємстві, сфера застосування даної тематики досить широка, розглянемо деякі питання і варіанти їх вирішення за коштами роботи з Ворд і створенням звітів:

А на рахунок хто ж цим займається? Ця інформація може бути корисна керівникам. Будь-WINDOWS програміст з вищою або середньо спеціальною освітою, знайомий з МВР і ООП. Такого виду програмістів часто називають прикладними. Термін виготовлення в середньому 2-3 місяці з урахуванням бета тестування.

Основи роботи з OLE

На програмному рівні робота з WORD полягає в використанні OLE. Основна структура взаємодії така: Існує програма СЕРВЕР, яка вважається головною і саме вона виконує всі операції, в нашому випадку сервером є програма WORD. З цих слів вже ясно, що якщо WORD не встановлено на комп'ютері, тобто сервер відсутній, то нічого виконано бути не може. Просто нікому буде виконувати. Це, по суті, найбільш поширений питання серед програмістів середнього класу. Друга взаємодіє програма - це програма КЛІЄНТ, все, що вона робить - це пов'язується з сервером і просить його виконати необхідні операції, сама по собі вона нічого не може. В результаті такої взаємодії і вирішується поставлене завдання. Тепер розглянемо реалізацію:

Ця процедура пов'язує змінну MsWord з Ole, в результаті чого подгружается сам WORD, далі ми робимо його поки невидимим і перевіряємо версію, пояснення процедури перевірки версії будуть пізніше.

Головний клас, в якому описані основні змінні і процедури необхідні для коректної роботи з WORD.

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

Помилки при виклику WORD

Для початку опишемо процедуру завантаження в WORD DOC файлу, робиться це так: Можна до вже відкритого додати ще один, так щоб в результаті з двох отримати один. A ось і процедура, яка найбільш часто використовується в додатках такого типу! А тепер розглянемо проблеми, які зустрічаються при роботі з WORD, про які говорилося раніше.
  1. Якщо встановити Ворд і спробувати відразу зв'язатися з ним через Ole, то нічого не вийде, справа в тому, що при першому запуску WORD програма пропонує надрукувати тестову сторінку, при цьому, не повідомивши про це Ole клієнту. Через що в роботі вашої програми може відбуватися збій. І виправлення ця помилка не підлягає, дана неприємність - справа рук компанії MICROSOFT створила WORD і поки вона цю проблему вирішувати не збирається, як видно з WORD XP.
  2. Ще може бути ситуація, коли відкривається WORD файл вже зайнятий іншим додатком, або копією вашого, тоді ворд пропонує використовувати режим тільки для читання, а по звільненню ресурсу пропонує перехід в можливість редагування. Це теж впливає на роботу клієнтської програми, оскільки вимагає від користувача згоди на зміну режимів.
  3. Файл, який ви відкриваєте, просто не існує. Цю проблему вам доведеться вирішувати засобами мови розробки. WORD подібні сервіси не надає.
  4. На використовуваної машині не вистачає пам'яті. Відповідь на це питання дивіться в пункті 3.

Створення звітів в WORD (різні підходи)

Існує кілька підходів створення нестандартних звітів в WORD, використовуючи OLE технології, розглянемо їх по порядку:
  1. Це стандартний підхід. Клієнт робить запит, сервер виконує, клієнт робить наступний запит і так далі, поки завдання не буде вирішена.
  2. Можна використовувати вбудований в WORD мову VBA, написати необхідні макроси на Visual Basic Script і впровадити їх в поточний документ, тоді залишиться тільки викликати їх і все. За рахунок цього можна реально виграти в часі, але волею випадку цей метод в основному використовується в комп'ютерні віруси, за рахунок чого відноситься до вірусних технологій і через це деякі антивіруси можуть визначати вашу програму як інфіковану WORD вірусом. Тому даний метод так і не набув поширення серед Ole програм.
  3. Третій метод - найважливіший, а полягає він у поєднанні перших двох, таким чином, демонструючи взаємне доповнення підходів.

Для втілення будь-якого з 3-х підходів необхідні ще додаткові дії. Якщо потрібно записувати / читати з певною позиції в тексті або необхідно працювати з таблицею, то треба розставити закладки в потрібних позиціях документа. Це найкраще зробити в шаблонному документі вручну. Потім треба буде знайти ці закладки в тексті і перейти до них. Для початку, напишемо процедуру пошуку закладки та переходу до неї.

Тепер ятати ми знайшли запишемо в те місце що-небудь

Чудово, крім простого запису, ми отримали, і доступ до конфігурації тексту і можемо писати текст з атрибутами жирний. курсив. закреслений. підкреслений. вказувати розмір шрифту і навіть відстежувати центрування, повірите мені - цього більш ніж достатньо для реалізації програм будь-якого ступеня складності!

Тепер напишемо процедуру переходу до наступної комірки таблиці, вважаємо, що на першу ми перейшли по закладці!

Таким же чином запускаються макроси WORD, тільки замість NextCell треба вставити ім'я макросу який хочемо запустити. Важливо не забувати, що через Ole можна викликати тільки "вільні макроси" тобто без параметрів. (VIRUS TECHNOLOGIES NOT FOR GAME)

А ось ще процедура. Вона дозволяє пропускати необхідну кількість елементів таблиці з урахуванням, що позиціонування на закладці ще можливо не було.

  • NewList - змінна булевского типу, що відповідає за початок нового аркуша і нової таблиці на ньому.
  • a1 - закладка на першу комірку таблиці.
Є ще команда по роботі з закладками. Це видалення.

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

Корисна процедура для всіх типів підходів до ole програмування. Вона перераховує сантиметри в пікселі.

Попереднє налаштування сторінки WORD

Однією з найпоширеніших проблем роботи з Ole WORD - різноманітні конфігураційні у різних версій WORD і на різних машинах, Внаслідок чого іноді документ відтворюється некоректно. Цю проблему можна вирішити, задавши параметри конфігурації сторінки вручну. Серед таких налаштувань окремо можна виділити можливості коригування відступів праворуч, ліворуч, зверху і знизу, а також ряд інших параметрів.

Взагалі-то всього описаного вище цілком достатньо для роботи, але є таке поняття, як "підв'язати бантики і шнурочки" і саме це ми і зробимо.

Отримати версію WORD: Закрити WORD: закрити документ WORD: Зберегти активний документ: Відправка активного документа на друк: Розрив сторінки - перехід до нової сторінки. Реалізується так:

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