Отчетность в 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. Если у тебя есть достаточные навыки, чтобы разобраться с ним, то в перед. А начинающему программисту там без бутылки не разобраться. Если ты относишься ко второй категории, то жди, возможно я еще вернусь к этой теме.


Отчетность в Excel