Delphi中Excel的快速导入

来源:互联网 发布:什么是网络互联 编辑:程序博客网 时间:2024/06/07 17:34

//怎样可以提高EXCEL的导出速度?

uses ADODB,excel97,adoint;

function TForm1.ExportToExcel: Boolean;
var
  xlApp,xlBook,xlSheet,xlQuery: Variant;
  adoConnection,adoRecordset: Variant;
begin
  adoConnection := CreateOleObject('ADODB.Connection');
  adoRecordset := CreateOleObject('ADODB.Recordset');
  adoConnection.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/Tree.mdb;Persist Security Info=False');
  adoRecordset.CursorLocation := adUseClient;
  adoRecordset.Open('SELECT * FROM tree',adoConnection,1,3);

  try
    xlApp := CreateOleObject('Excel.Application');
    xlBook := xlApp.Workbooks.Add;
    xlSheet := xlBook.Worksheets['sheet1'];
    xlApp.Visible := True;

    //把查询结果导入EXCEL数据
    xlQuery := xlSheet.QueryTables.Add(adoRecordset,xlSheet.Range['A1']); 
//关键是这一句
    xlQuery.FieldNames := True;
    xlQuery.RowNumbers := False;
    xlQuery.FillAdjacentFormulas := False;
    xlQuery.PreserveFormatting := True;
    xlQuery.RefreshOnFileOpen := False;
    xlQuery.BackgroundQuery := True;
    //xlQuery.RefreshStyle := xlInsertDeleteCells;
    xlQuery.SavePassword := True;
    xlQuery.SaveData := True;
    xlQuery.AdjustColumnWidth := True;
    xlQuery.RefreshPeriod := 0;
    xlQuery.PreserveColumnInfo := True;
    xlQuery.FieldNames := True;
    xlQuery.Refresh;

    xlBook.SaveAs('d:/fromD.xls',xlNormal,'','',False,False);

  finally
    if not VarIsEmpty(XLApp) then begin
      XLApp.displayAlerts:=false;
      XLApp.ScreenUpdating:=true;
      XLApp.quit;
    end;
  end;
end;

原创粉丝点击