读书人

如何将查询结果快速导出到EXCEL啊

发布时间: 2012-02-19 19:43:37 作者: rapoo

怎么将查询结果快速导出到EXCEL啊?
我是通过循环语句, 一条条写入到EXCEL的,可四万多条的数据,要二个多小时, 这也太恐怖了.
谁有好的方法,可以快速导出呢?

[解决办法]
DBGridEh可以直接导出
[解决办法]
可以用copy,paste,现拷贝到剪贴板,然后在拷贝到excel里
[解决办法]
procedure ExportData(title:string;exDataset:TDBGridEh;Data:Tquery;style:TexportKind;saveDir:string);
var
Excel : TStringList;
count : integer; //处理DBGRID列时使用
rData : string ; //行数据;
begin
Rdata:= ' ';
Data.First;

DATA.DisableControls;
case style of
eHtml : begin
end; {ehtml end}
eExcel: begin
saveDir:=SaveDir+ '.xls ';

Excel := TStringList.Create;
with exDataset do begin
excel.Add(title);

for count := 0 to Columns.Count-1 do
begin
rData := RData+Columns[count].Title.Caption +#9;
end;
excel.Add(rData);
rData := ' ';

with data do begin
while not eof do begin
{由于在处理回车换行时多增加了一列隐藏列,实为无字段列。}

for count:=0 to Columns.Count-1 do begin
rData :=Rdata+Fields[count].Text+#9;
end; {for count}
excel.Add(rdata);
Rdata:= ' ';
next;
end; {while}
end; {for with data}
end;{with exDateset}
excel.SaveToFile(savedir);
FreeAndNil(excel);
end; { eExcel:begin}
eTxt : begin
SaveDir:=SaveDir+ '.txt ';
Excel := TstringList.Create;
excel.Add(title);
with exDataset do begin
with data do begin
while not eof do begin
for count:=0 to Columns.count-2 do begin
rdata:=rdata+Fields[count].Text+ ' ';
end; { with count}
Excel.Add(rdata);
rdata:= ' ';
next;
end; {while}
end; {with data}
Excel.SaveToFile(savedir);
end; {with exdataset}
FreeAndNil(excel);
end;
end; {case}
DATA.EnableControls;
end;
[解决办法]
DBGridEh导出到Excel是加#9分隔的,不能设置格式的
[解决办法]
这样:
uses DBGridEhImpExp ;
...
...
...
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, DBGridEh1, FileNameStr, True);

读书人网 >.NET

热点推荐