Excel-шаблони звітів. Структура, розмітка
Шаблон звіту являє собою один лист Microsoft Excel, що містить вже готові частини і розмітку звіту.
Перша колонка містить текстове ім'я бенду (секції), причому якщо бенд має більше одного рядка в висоту, то його ім'я повинне повторюватися на кожному рядку. Об'єднання осередків для цієї колонки використовувати не можна. Після побудови звіту ця колонка залишиться порожньою, тому її можна зробити дуже вузеньку, або взагалі приховати - на працездатність це не вплине.
Вся інша частина рядка, це розмітка звіту, що містить заголовки, рамки, встановлені шрифти, властивості осередків, і де треба об'єднання. Можна використовувати навіть формули, якщо вони посилаються на осередки в межах рядка або бенду.
Так може виглядати готовий шаблон для виведення в Excel накладної з цінами і сумами.
Що потрібно знати для побудови звіту
Після того, як ви розмістили компонент звіту на своїй формі, вам залишається тільки викликати в потрібних місцях його процедури, для побудови звіту і видачі його користувачеві.
На початку побудови звіту викликаємо метод OpenTemplate (FileName. String), із зазначенням файлу-шаблона. Далі відбувається наповнення листа бенду і даними, послідовними викликами методів PasteBand і SetValue. В кінці побудови викликаємо Show () і користувачеві відкривається екселевскій звіт, в режимі "тільки читання", це зроблено для того щоб він, бува, не перезаписав шаблон. При спробі зберегти його, Ексель запропонує вибрати місце збереження і ім'я файлу.
Метод PasteBand (Name. String) - додає на лист потрібний нам бенд (бенд - це одна або кілька рядків, що мають в першій клітинці одне і теж ім'я).
Метод SetValue (VarName. String; Value. Variant) знаходить в останньому встановленому бенді змінну з ім'ям VarName і замінює це ім'я на його значення Value. Цей метод можна викликати стільки раз, скільки передбачається різних змінних в потрібному бенді. Для рядків довжиною більше 255 символів використовуйте SetValueAsText. Для обходу поганої звички Excel перетворювати дані види «10.10» або «9/10" в дату слід ім'я змінної в осередку зчепити з текстом, наприклад з предваряющим пропуском: "# D #». У разі якщо це не прийнятно можна використовувати метод SetValueAsText.
Додаткові можливості при побудові звітів
Метод SetValueAsText (varName. String; Value. String) працює повільніше методу SetValue і не здатний знайти ім'я змінної всередині текстового рядка, але потрібен для обходу поганої звички Excel автоматично форматувати текст у вигляді дати там де цього не потрібно. Наприклад значення «10.10» підміняється Ексель на «10 Жовтня.», А цей метод дозволяє цього уникнути.
OpenTemplate є варіант виклику із зазначенням чи потрібно давати користувачеві бачити як в екселя відбувається заповнення звіту, при цьому якщо параметр дорівнює Visible = True то вікно прогресу не показується.
OpenWorkSheet (Name. String) перемикає висновок звіту на новий лист. Використовується якщо вам потрібно робити багато-листові звіти.
SetSumFormula (VarName. String; FirstLine. LastLine. Integer) вставляє в осередок VarName формулу підсумовування по рядках FirstLine. LastLine (по типу «= СУММ (C10: C25)»). Значення FirstLine і LastLine потрібно зберегти попередньо самостійно, взявши номер рядка з змінної CurrentLine на початку і в кінці виведення потрібної секції.
Для всього що не передбачено можна піти шляхом прямого управління Ексель, наприклад:
Закріпити область можна таким кодом:
Підтримувані версії Excel і Delphi:
Не варто лякатися, побачивши в папці з компонентом тільки версію під Delphi 7 і Delphi XE2 - думаю при установці компонента і на інші версії проблем не виникне.