Главная страница | Продукты | Delphi | Юмор | Контакт

Использование сервера автоматизации Excel

Для использования серверов автоматизации необходимо подключить модуль comobj

Пример работы с Excel 97/2000 на Delphi 3(Zip 23 kb)
Пример работы с Excel
Копирование данных из TDataSet в Excel

Пример работы с Excel
В следующей процедуре реализовано открытие нового экземпляра Excel, создание рабочих листов, заполнение ячеек и создание диаграммы
procedure TfmMain.btExample6Click(Sender: TObject);
var
 Excel,WorkBook,Sheet1,Sheet2,Chart:variant;
 Sheet,SeriesCollection:Variant;
 vrange:variant;
 i,j:integer;
begin
 Excel:=CreateOleObject('Excel.Application');//создаем экземпляр объекта автоматизации
 Excel.Visible:=cbExcelVisible.Checked;
 Excel.SheetsInNewWorkbook := 2;//колическтво рабочих листов в создаваемой книге
 WorkBook:=Excel.Workbooks.Add;//создание новой рабочей книги
 Sheet1:=WorkBook.WorkSheets[1];
 Sheet2:=WorkBook.WorkSheets[2];
 Chart:=WorkBook.Charts.Add;//создание новой диаграммы
 Sheet1.Name:='Table 1';//переименование рабочего листа
 Sheet2.Name:='Table 2';
 for j:=1 to 2 do begin //заполнение ячеек
  Sheet:=WorkBook.WorkSheets[j];
  for i:=1 to 11 do begin
   Sheet.Cells.Item[i,1].Value:=i;
   Sheet.Cells.Item[i,2].Value:=i*2;
  end;
 end;
 vrange:=Sheet1.range['A1:A10'];
 SeriesCollection:=Chart.SeriesCollection;
 SeriesCollection.Add(vrange);
 vrange:=Sheet2.Range['B1:B10'];
 SeriesCollection.Add(vrange);
 Excel:=UnAssigned;
end;
Копирование данных из TDataSet в Excel
procedure DataSetToExcel(DataSet:TDataSet;DataAsString:boolean);
var
 Excel, WorkBook, Sheet, v : Variant;
 Col, Row, i : Integer;
begin
 Excel := CreateOleObject('Excel.Application');
 try
  Excel.SheetsInNewWorkbook := 1;
  WorkBook := Excel.WorkBooks.Add;
  Sheet := WorkBook.WorkSheets[1];
  with DataSet do try
   DisableControls;
   Row := 2;
   Col := 1;
   for i := 0 to FieldCount-1
   do if Fields[i].Visible then begin
    Sheet.Cells[Row, Col] := Fields[i].DisplayName;
    Inc(Col);
   end;
   Sheet.Rows[Row].Font.Bold := True;
   Inc(Row);
   First;
   while NOT EOF do begin
    Col := 1;
    for i := 0 to FieldCount-1
    do if Fields[i].Visible then begin
     if DataAsString then begin
      Sheet.Cells[Row, Col] :=Fields[i].DisplayText;
     end else begin
      v := Fields[i].Value;
      Sheet.Cells[Row, Col] := v;
     end;
     Inc(Col);
    end;
    Next;
    Inc(Row);
   end;
  finally
   EnableControls;
  end;
 finally
  Sheet.Cells.Columns.AutoFit;
  Excel.Visible := True;
 end;
end;
Начало

Главная страница | Продукты | Delphi | Юмор | Контакт