Листинг 2
procedure TForm1.Button1Click(Sender: TObject);
var
Row: Integer;
BegTime: TDateTime;
begin
BegTime := Time;
Screen.Cursor := crHourGlass;
// Создаем новую рабочую книгу с одним листом
Excel.SheetsInNewWorkbook[0] := 1;
Excel.Workbooks.Add(EmptyParam,0);
//Устанавливаем шрифт для всех колонок
Excel.Columns.Font.Size := 8;
{В этом месте я хотел установить ширину колонок и полей, используя
операторы типа
Excel.Columns.Item[EmptyParam,1].ColumnWidth := 4;
и т.д. Увы, это мне сделать не удалось. При использовании интерфейсов заимствование "в лоб"
приемов работы с вариантами чаще всего заканчивается неудачей.
//Заголовок прайс-листа:
Excel.Cells.Item[1,2].Value := 'Прайс-лист на '+DateToStr(Date);
Excel.Cells.Item[1,2].Font.Size := 12;
Excel.Cells.Item[1,2].Font.Bold := True;
Excel.Cells.Item[1,2].Font.Italic := True;
//Заголовки колонок:
Excel.Cells.Item[2,1].Value := 'Код';
Excel.Cells.Item[2,2].Value := 'Название';
Excel.Cells.Item[2,3].Value := 'Год';
Excel.Cells.Item[2,4].Value := 'Страниц';
Excel.Cells.Item[2,5].Value := 'Цена';
Excel.Cells.Item[2,1].Font.Bold := True;
Excel.Cells.Item[2,2].Font.Bold := True;
Excel.Cells.Item[2,3].Font.Bold := True;
Excel.Cells.Item[2,4].Font.Bold := True;
Excel.Cells.Item[2,5].Font.Bold := True;
Books.Open;
Row := 3;
pb.Max := Books.RecordCount;
pb.Position := 0;
pb.Show;
while not Books.Eof do
begin
Excel.Cells.Item[Row,1].Value := BooksBookID.Value;
Excel.Cells.Item[Row,2].Value := BooksBName.Value;
Excel.Cells.Item[Row,3].Value := BooksBYear.Value;
Excel.Cells.Item[Row,4].Value := BooksBPages.Value;
Excel.Cells.Item[Row,5].Value := BooksBOpt.AsCurrency;
inc(Row);
pb.Position := Row-3;
Application.ProcessMessages;
Books.Next
end;
Books.Close;
Screen.Cursor := crDefault;
pb.Hide;
//Показываем окно Excel
Excel.Visible[0] := True;
lb.Caption := 'Время работы: '+TimeToStr(Time-BegTime)
end;