Листинг 1
except
procedure TForm1.Button1Click(Sender: TObject);
var
Range,Sheet: Variant; //Для хранения одноименных объектов
Row: Integer; //Счетчик строк
BegTime: TDateTime; //Хранит время начала работы
begin
BegTime := Time;
if not VarIsEmpty(Excel) then
Exit; //Игнорируем щелчок, если таблица уже создана
//Пытаемся открыть НД
try
Books.Open;
except
ShowMessage('Невозможно открыть таблицу BOOKS.DB');
Exit
end;
//Пытаемся создать главный объект Excel.Application
try
Excel := CreateOleObject('Excel.Application')
ShowMessage('Нет доступа к серверу Excel');
Exit
end;
//Изменяем форму курсора перед длительной работой
Screen.Cursor := crHourGlass;
//Добавляем новую рабочую книгу с одним листом:
Excel.SheetsInNewWorkbook := 1;
Excel.Workbooks.Add;
//Устанавливаем в Sheet ссылку на первый лист:
Sheet := Excel.Workbooks[1].Sheets[1];
//Устанавливаем меньшие поля страницы
Sheet.PageSetup.LeftMargin := 30;
Sheet.PageSetup.RightMargin := 30;
Sheet.PageSetup.TopMargin := 40;
Sheet.PageSetup.BottomMargin := 30;
//Разрешаем печать сетки
Sheet.PageSetup.PrintGridLines := True;
//Изменяем умалчиваемую ширину колонок:
Range := Sheet.Columns;
Range.Columns[1].ColumnWidth := 4; //Колонка "Код"
Range.Columns[2].ColumnWidth := 72; //Колонка "Название"
Range.Columns[3].ColumnWidth := 4; //Колонка "Год"
Range.Columns[4].ColumnWidth := 4; //Колонка "Страницы"
Range.Columns[5].ColumnWidth := 6; //Колонка "Цена"
//Изменяем высоту шрифта для всех колонок:
Range.Columns.Font.Size := 8;
//Готовим заголовок прайс-листа:
Range := Sheet.Range['a1:e1']; //Диапазон для первого ряда
Range.Font.Size := 15; //Высота шрифта
Range.Font.Bold := True; //Шрифт жирный
Range.Font.Italic := True; // и курсив
Range.Columns.Interior.ColorIndex := 6; //Фон желтый
Range.HorizontalAlignment := 3; //Текст по центру
Sheet.Cells[1,2] := 'Прайс-лист на '+DateToStr(Date);
//Готовим заголовки колонок:
Range := Sheet.Range['a2:e2'];
Range.Font.Size := 10;
Range.Font.Bold := True;
Sheet.Cells[2,1] := 'Код';
Sheet.Cells[2,2] := 'Название/ Автор/ Издательство';
Sheet.Cells[2,3] := 'Год';
Sheet.Cells[2,4] := 'Страниц';
Sheet.Cells[2,5] := 'Цена';
pb.Show;
pb.Max := Books.RecordCount;
pb.Position := 0;
Row := 3;
while not Books.EOF do
begin
Sheet.Cells[Row,1] := BooksBookID.Value;
Sheet.Cells[Row,2] := BooksBName.Value+'/ '+
BooksBAuthor.Value+'/Value '+BooksBPublish.Value;
Sheet.Cells[Row,4] := BooksBYear.Value;
Sheet.Cells[Row,5] := BooksBPages.Value;
Sheet.Cells[Row,6] := BooksBOpt.AsCurrency;
inc(Row);
pb.Position := Row-3;
Application.ProcessMessages;
Books.Next
end;
pb.Hide;
Screen.Cursor := crDefault;
Excel.Visible := True; //Показываем окно Excel с готовой таблицей
lb.Caption := 'Время работы: '+TmeToStr(Time-BegTime)
end;