Наше завдання створити. Ця потреба може виникнути в кожного програміста баз даних, адже Office встановлено в нашій країні практично на кожному комп'ютері. А це означає, що вашу звітність можна сміливо переносити між комп'ютерами і бути впевненим, що її зможуть прочитати.
Спочатку я покажу повністю процедуру, тому що исходников в кінці статті не буде, а потім ми розберемо її по кісточках:
procedure TForm1.Button1Click (Sender: TObject);
var
XLApp, Sheet, Colum: Variant;
index, i: Integer;
begin
XLApp: = CreateOleObject ('Excel.Application');
XLApp.Visible: = true;
XLApp.Workbooks.Add (-4167);
XLApp.Workbooks [1]. WorkSheets [1]. Name: = "Звіт";
Colum: = XLApp.Workbooks [1]. WorkSheets ['Звіт']. Columns;
Colum.Columns [1]. ColumnWidth: = 40;
Colum.Columns [2]. ColumnWidth: = 10;
Colum.Columns [3]. ColumnWidth: = 30;
Colum.Columns [4]. ColumnWidth: = 10;
Colum: = XLApp.Workbooks [1]. WorkSheets ['Звіт']. Rows;
Colum.Rows [2]. Font.Bold: = true;
Colum.Rows [1]. Font.Bold: = true;
Colum.Rows [1]. Font.Color: = clBlue;
Colum.Rows [1]. Font.Size: = 14;
Sheet: = XLApp.Workbooks [1]. WorkSheets ['Звіт'];
Sheet.Cells [1,2]: = "Звіт з Delphi ';
Sheet.Cells [2,1]: = 'Колонка 1';
Sheet.Cells [2,2]: = 'Колонка 2';
Sheet.Cells [2,3]: = 'Колонка 3';
Sheet.Cells [2,4]: = 'Колонка 4';
index: = 3;
for i: = 0 to 2 do
begin
Sheet.Rows [index]. Font.Color: = clGreen;
Sheet.Cells [index, 1]: = random (100);
Sheet.Cells [index, 2]: = random (100);
Sheet.Cells [index, 3]: = random (100);
Sheet.Cells [index, 4]. Font.Color: = clRed;
Sheet.Cells [index, 4]: = random (100);
Inc (index);
end;
end;
Для того, щоб все це працювало, потрібно підключити в розділ Uses модуль ComObj. А тепер почнемо все з самого початку.
Перший рядок створює об'єкт Excel (XLApp: = CreateOleObject ('Excel.Application')), і записує його в змінну XLApp. Ця змінна типу Variant. Variant - це тип, який може приймати будь-які значення: рядки, числа, покажчики та ін Другий рядок (XLApp.Visible: = true) змушує запустити сам Excel. Потім я додаю нову робочу книгу (XLApp.Workbooks.Add (-4167)). Число в дужках - це константа, яка означає створення книги та її змінювати не можна. Далі я даю назву створеної книзі XLApp.Workbooks [1]. WorkSheets [1]. Name: = "Звіт". Ця дія не обов'язково, але я завжди це роблю, тому що мене бісить назву за умовчанням "Лист 1".
Тепер у нас Excel запущений і створена нова книга. Можна переходити до вдруковуванню даних. Але перш ніж це зробити я відформатуй колонки і рядки. Для цього я отримую покажчик на колонки робочої книги (Colum: = XLApp. Workbooks [1]. WorkSheets ['Звіт']. Columns), і записую результат в змінну Colum типу Variant. Тепер послідовно змінюю ширину колонок (Colum. Columns [1]. ColumnWidth: = 40). Російською ця команда буде звучати так: Колонки. Колонка [1]. ШірінаКолонкі: = 40.
Після цього я в ту ж змінну записую покажчик на рядки робочої книги (Colum: = XLApp. Workbooks [1]. WorkSheets ['Звіт']. Rows). Для прикраси рядків нашого звіту, я встановлюю у перших двох рядків жирний шрифт (Colum. Rows [1]. Font. Bold: = true). У квадратних дужках тепер порядковий номер рядка. Далі йдуть два рядки, в яких я встановлюю колір першого рядка в синій і розмір шрифту рівний 14.
Форматування закінчено, тепер можна виводити дані. Для цього я отримую покажчик на лист (Sheet: = XLApp.Workbooks [1]. WorkSheets ['Звіт']). Для того, щоб вивести дані, потрібно просто присвоїти значення в Sheet.Cells [рядок, колонки]. У процесі виведення даних можна змінювати колір рядків 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. Якщо у тебе є достатні навички, щоб розібратися з ним, то в перед. А починаючому програмістові там без пляшки не розібратися. Якщо ти ставишся до другої категорії, то чекай, можливо я ще повернуся до цієї теми.