procedure DataToExcel(dataset:tdataset);
var
  XLApp: Variant;
    i,j: Integer;
  Sheet: Variant;
  Book:TBookStr;
begin
  if (dataset.state=dsInactive) or (dataset.isempty)  then exit;
  try
     dataset.DisableControls;
     Book:=dataset.Book;
     XLApp:= CreateOleObject('Excel.Application');
     XLApp.Visible := True;
     XLApp.Workbooks.Add(-4167);
     XLApp.Workbooks[1].WorkSheets[1].Name :='ϵͳÊý¾Ý';
     Sheet := XLApp.Workbooks[1].WorkSheets['ϵͳÊý¾Ý'];
     for I:=1 to dataset.FieldCount do Sheet.Cells[1, i]:=dataset.Fields[i-1].FullName;
     j:=2;
     dataset.First;
     while not dataset.eof do
        begin
          for i := 1 to dataset.fieldcount do
              Sheet.Cells[j, i] :=dataset.FieldByName (dataset.fields[i-1].FieldName ).AsString;
          j:=j+1;
          dataset.next;
        end;
  finally
     dataset.EnableControls;
     dataset.Book:=Book;
  end;
end;