procedure TForm1.Button1Click(Sender: TObject); var Excel,WrkBook,WrkSheet:olevariant; Row,SheetCount,tmp:Integer; Begin try //Excel:=self.OleContainer1.OleObject; Excel := CreateOleObject('Excel.Application'); except if Application.MessageBox('对不起,你的机器没有安装Microsoft Excel,是否继续导出?' + #13#13 + '导出后在您的机器上不能直接打开,必须安装Excel到机器上才能打开!', '注意', MB_OKCANCEL) = ID_no then Exit; end;
if SaveDialog1.Execute then Begin //self.StatusBar1.Panels[1].Text := '系统正在导出,请稍后......'; WrkBook:=Excel.WorkBooks.Add; Row := 1; SheetCount:=1; while not ADOQuery1.Eof do Begin if Row=1 then for tmp := 0 to s_caption.Count - 1 do //插入加入标题: Excel.WorkSheets[SheetCount].Cells[Row,tmp+1].value:=s_caption.Items[tmp]; inc(Row); for tmp := 0 to ADOQuery1.FieldCount - 1 do Excel.WorkSheets[SheetCount].Cells[Row,Tmp+1].value := ADOQuery1.Fields[tmp].AsString; if Row>50000 then Begin SheetCount:=SheetCount+1; Row:=0; if SheetCount>3 then Begin WrkSheet:=WrkBook.WorkSheets[WrkBook.WorkSheets.Count]; WrkBook.WorkSheets.Add(emptyparam,WrkSheet,1,$FFFFEFB9); End; End; ADOQuery1.Next; //ProgressBar1.StepIt; End; //循环结束 Excel.Activeworkbook.saveas(SaveDialog1.FileName); end; WrkBook.close; Excel.quit ; Excel:=unassigned ; self.OleContainer1.LoadFromFile(SaveDialog1.FileName); ShowMessage('系统已经导出,请到'+SaveDialog1.FileName+'里查看'); end;
----------------------------------------------
-