Отчётность в Excel
Наша
задача создать отчётность в Excel. Эта потребность может возникнуть у каждого
программиста баз данных, ведь 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. Если у тебя есть достаточные навыки, чтобы разобраться
с ним, то в перёд. А начинающему программисту там без бутылки не разобраться.
Если ты относишься ко второй категории, то жди, возможно я ещё вернусь к этой
теме.
Список литературы
Для
подготовки данной работы были использованы материалы с сайта http://vlad2000.h1.ru/