首先确定在窗口上放有Excelapplication, Excelworkbook, Excelworksheet(在SERVER选项上),用来创建EXCEL文件及工作表.
再放入一个按钮,作为触发器,
拖入一个savedialog用来保存文件。代码如下:
procedure Tfrmqry.Button1Click(Sender: TObject);
var
i,j,row,nall:integer; //定义变量,i用以储存记录的数目, j是记录的列数 row是EXCEL的行数 nall是记录的总数
begin
if SaveDialog1.Execute then // 打开保存窗口,让用户选择保存的文件名
begin //inintial excel 初始化EXCEL
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
begin
nall:=qry1.RecordCount; //保存记录的数量
row:=0; //初始化行,定位在第一 行
for j:=0 to QRY1.Fields.Count-1 do // column name,统计共有的列数目,把列名逐列导出到EXCEL第一行
begin
ExcelWorksheet1.Cells.item[1, j+1] := qry1.Fields[j].DisplayName //.DisplayLabel;
end;
for i:=0 to nall-1 do // total rows 正规记录,从第一条记录一直到最后循环
while not qry1.Eof do 只要记录没到最后就执行以下动作
begin
for j:=0 to QRY1.Fields.Count-1 do // column逐列导出动作
begin
ExcelWorkSheet1.Cells.Item[row+2,j+1]:=QRY1.Fields[j].AsString;[行,列]
end;
row:=row+1; //行进行增量
qry1.Next; //到下一条记录
end;
end;
//以下是导出完毕后的动作,
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName+'.xls'); //加后缀名,确保最后是EXCEL文件
ExcelWorkBook1.Close(false);
ExcelApplication1.Disconnect; //断开与EXCEL的连接
Screen.Cursor:=crDefault; //指针随记录而动
showmessage('成功导出 '+inttostr(nall)+' 条数据!');
end;
end;