由 love_yb97 » 星期三, 2010年1月27日 21:09
procedure TFrmQuery.DBGrid1CellClick(Column: TColumn);
begin
//EXP.DExport;
end;
procedure TFrmQuery.Button3Click(Sender: TObject);
begin
end;
//导出数据
procedure TFrmQuery.ExportDATA(Query:TADOQuery);
var
ExcelApp:TExcelApplication;
ExcelWKBook:TExcelWorkbook;
ExcelWKSheet:TExcelWorksheet;
I,J,K:integer;
begin
if Query.IsEmpty then
begin
MessageDLG(#13+'无任何数据源可供导出!数据导出操作将中止!',MtError,[MbOk],0);
Exit;
end;
TRY
ExcelApp:= TExcelApplication.Create(Application);//创建Excel应用
ExcelWKBook:= TExcelWorkbook.Create(Application); //创建Excel工作薄
ExcelWKSheet:= TExcelWorksheet.Create(Application); //创建Excel工作表
ExcelApp.Connect;
ExcelApp.Visible[0]:=false;
Application.BringToFront; //程序前置
EXCEPT
MessageDlg('Excel没有安装或创建Excel时出现问题!',mtERROR,[mbYes],0);
abort;
END;
ExcelApp.Workbooks.Add(EmptyParam,0);
ExcelWKBook.ConnectTo(ExcelApp.Workbooks[1]);
ExcelWKSheet.ConnectTo(ExcelWKBook.Worksheets[1] as _WorkSheet);
TRY
begin
if SaveDialog1.Execute then
lab.Caption:='正在导出数据,请稍侯......';
with Query do
begin
for i:=0 to FieldCount-1 do
begin
ExcelWksheet.Cells.Item[1,i+1]:=Fields[i].DisplayLabel;
end;
First;
for i := 0 to recordcount - 1 do
begin
k:=1;
for j:=0 to FieldCount-1 do
begin
if Fields[j].Visible then
begin
ExcelWksheet.Cells.Item[i+2,k]:=fields[j].AsString;
inc(k);
end;
end;
probar.Percent:=Trunc(I /(recordcount-1)*100);
lab.Caption:='正在导出数据,请稍侯......';
frmquery.Repaint;
next;
end;
end;
ExcelWksheet.SaveAs(SaveDialog1.FileName);
END;
Finally
ExcelWkbook.Save;
ExcelApp.Disconnect;
ExcelWksheet.Free;
ExcelWkbook.Close;
ExcelWkbook.Free;
ExcelApp.Quit;
ExcelApp.Free;
end;
showmessage('已将表格中的数据成功导出!');
end;