以下的一段过程 CopyDbDataToExcel([dbGrid1,dbGrid2...])是实现从N个dbGrid中输出数据到EXCEL的,但总觉得输出的速度不佳.看看大家有什么高见或有更好的方法?
procedure TForm1.CopyDbDataToExcel(Args: array of const);
var
  iCount, jCount, rCount, I: Integer;
  XLApp, Sheet: Variant;
begin
  Screen.Cursor := crHourGlass;
  if not VarIsEmpty(XLApp) then
  begin
    XLApp.DisplayAlerts := False;
    XLApp.Quit;
    VarClear(XLApp);
  end;  try
    XLApp := CreateOleObject('Excel.Application');
  except    Screen.Cursor := crDefault;
    Exit;
  end;  XLApp.WorkBooks.Add;
  XLApp.SheetsInNewWorkbook := High(Args) + 1;  for I := Low(Args) to High(Args) do
  begin
    XLApp.WorkBooks[1].WorkSheets[I + 1].Name :=
      TDBGrid(Args[I].VObject).Name;
    Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];    if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
    begin
      Screen.Cursor := crDefault;
      Exit;
    end;    rCount := TDBGrid(Args[I].VObject).Columns.Count - 1;
    TDBGrid(Args[I].VObject).DataSource.DataSet.First;
    for iCount := 0 to rCount do
      Sheet.Cells[1, iCount + 1] :=
        TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;    jCount := 1;
    while not TDBGrid(Args[I].VObject).DataSource.DataSet.EOF do
    begin
      for iCount := 0 to rCount do
        Sheet.Cells[jCount + 1, iCount + 1] :=
          TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;      Inc(jCount);
      TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
    end;
    XlApp.Visible := True;
  end;
  Screen.Cursor := crDefault;
end;