Inc(Index);
Table.Next;
end;
Це просто загальний приклад не пов'язаний з програмою. Тут так само запускається цикл по всім рядкам таблиці. Але виведення даних відбувається по новому. Для цього запускається ще один цикл від 1 до кількості колонок в сітці DBGrid. А усередині цього циклу робиться привласнення черговій колонці Excel, значення з такої ж колонки сітки DBGrid:
Sheet.Cells[Номер строки, Номер колонки]:=
DBGrid.Fields[Номер колонки в сетке].AsString;
Цей спосіб більш універсальний і може підійти майже завжди, коли треба вивести весь вміст сітки DBGrid і всі дані одного типа. У нашому випадку в таблиці є дата, тому, щоб вона красиво виглядала, її треба відформатувати за допомогою FormatDateTime. Отже пряме перенесення для цієї колонки було б не дуже зручне, але останні колонки можна було б перенести вказаним способом.
В процесі виведення даних можна змінювати колір рядків Sheet.Rows[строка].Font.Color або колонок Sheet.Columns[колонка]. Font.Color, простим привласненням (як це робилось при форматуванні). Якщо потрібно змінити колір окремої комірки, то це можна зробити, присвоївши нове значення в Sheet.Cells[строка,колонка].Font.Color.
Ось ще деякі параметри, які можна змінювати:
Sheet.Cells[строка,колонка].Font.Italic - курсивний шрифт
Sheet.Cells[строка,колонка].Font.Bold - жирний шрифт
Sheet.Cells[строка,колонка].Font.Underline – шрифт, який підкреслюється
Sheet.Cells[строка,колонка].Font.Size - розмір шрифта
За допомогою всього цього, можна створювати прості, але ефективні звіти. У Delphi, в директорії Lib є файл excel97.pas, в якому знаходяться всі доступні функції Excel.
А в нашої програми залишився один недолік – вона виводить дані лише з основного довідника, і не враховує телефони. Щоб позбавитися від цього недоліку можна написати окремий запит SQL, який формуватиме зведену таблицю з двох таблиць. Цей запит можна помістити в окремий компонент ADOQuery, виконати його і брати дані звідти, а не з таблиці BookTable.
Ось приклад запиту, який вибирає всі рядки з двох таблиць, формуючи окрему базу даних.
SELECT *
FROM Справочник, Телефоны
WHERE Справочник.Key1=Телефоны.LinkKey
На рис. 1 можна побачити результат роботи програми:
Рис. 1 Створення звітності в Excel