您的位置:首页 > 编程语言 > Delphi

delphi7中如何把数据库中数据保存为excel文件

2012-04-05 14:54 323 查看
如果我们对delphi中的通常打印报表控件使用感到不方便的时候,则可以选择:

把数据库中的数据先保存到excel文件中,这样用户既保存了文件,又可以很方便的打印。

控件:ADOConnection、ADOQuery、DataSource、SaveDialog、dxDBGrid

procedure TForm1.FormCreate(Sender: TObject);
var
sqlstr:string;
begin
sqlStr := 'select * from Table';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sqlStr);
ADOQuery1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
eclApp,WorkBook:olevariant;
xlsFileName:string;
i,j:integer;
begin

if SaveDialog1.Execute then
xlsFileName:=SaveDialog1.FileName;

try
eclApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleObject('Excel.Sheet');
except
Application.MessageBox('系统没有安装Microsoft Excel','Microsoft Excel',MB_OK+MB_ICONWarning);
Exit;
end;

try
WorkBook:=eclApp.workbooks.Add;
for i:=0 to dxDBGrid1.ColumnCount-1 do
begin
//这里可以更改列名,用if ... then进行判断和指定列名
eclApp.Cells(1,i+1):=dxDBGrid1.Columns[i].FieldName;
end;

dxDBGrid1.DataSource.DataSet.First;
j:=2;
while not dxDBGrid1.DataSource.DataSet.Eof do
begin
//for i:=0 to dxDBGrid1.DataSource.DataSet.FieldCount-1 do 2,3,5
{
for i:=0 to dxDBGrid1.ColumnCount-1 do
begin
eclApp.Cells(j,i+1):=dxDBGrid1.DataSource.DataSet.Fields[i].Value;
end;
}
eclApp.Cells(j,1):=dxDBGrid1.DataSource.DataSet.Fields[2].Value;
eclApp.Cells(j,2):=dxDBGrid1.DataSource.DataSet.Fields[3].Value;
eclApp.Cells(j,3):=dxDBGrid1.DataSource.DataSet.Fields[5].Value;

dxDBGrid1.DataSource.DataSet.Next;
inc(j);
end;

WorkBook.SaveAS(xlsFileName);
WorkBook.close;
except
ShowMessage('文件导出失败!');
Exit;
end;

Application.MessageBox('保存成功!','恭喜',MB_OK + MB_ICONINFORMATION);
end;
测试:1426条记录,<15s VS MFC下面 <10s,这个时间,用户应该是可以接受的吧?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐