DBGRID中的数据导出到EXCEL中:procedure TForm_gchhs.toexcel(grid:tdbgrid;qu:tdataset); var eclApp,WorkBook:Variant; xlsFileName:string; L: Integer; s, lang:string; i,j:integer; jj:integer; xssz:array [0..100] of integer; xssm:array [0..100] of string; k:integer; kk:integer; beginif form_gchhs.s.Execute then begin xlsFileName:= form_gchhs.s.FileName; try //创建OLE对象Excel Application与 WorkBook eclApp:=CreateOLEObject('Excel.Application'); WorkBook:=CreateOLEObject('Excel.Sheet'); except ShowMessage('您的机器里未安装Microsoft Excel。'); Exit; end; for i:=0 to 100 do begin xssz[i]:=0; xssm[i]:=''; end; k:=-1; l:=1; workBook:=eclApp.workBooks.Add; for i:=0 to grid.Columns.Count -1 do begin if grid.Columns[i].visible=true then begin k:=k+1; xssz[k]:=i; for kk:=0 to qu.FieldCount -1 do begin if qu.Fields[kk].fieldname=grid.columns[i].fieldname then xssz[k]:=kk; end; xssm[k]:=grid.columns[i].title.caption; eclApp.Cells(l , k+1):=xssm[k]; end; end; with qu do begin first; while not qu.eof do begin l:=l+1; for j:=0 to k do eclApp.Cells(l , j+1):=fields[xssz[j]].AsString; qu.next; end; end; WorkBook.saveas(xlsFileName); WorkBook.Close; eclApp.Quit; //退出Excel Application //释放VARIANT变量 //eclApp:=Unassigned; ShowMessage('文件已保存!'); end; end;
var
eclApp,WorkBook:Variant;
xlsFileName:string;
L: Integer;
s, lang:string;
i,j:integer;
jj:integer;
xssz:array [0..100] of integer;
xssm:array [0..100] of string;
k:integer;
kk:integer;
beginif form_gchhs.s.Execute then
begin
xlsFileName:= form_gchhs.s.FileName;
try
//创建OLE对象Excel Application与 WorkBook
eclApp:=CreateOLEObject('Excel.Application');
WorkBook:=CreateOLEObject('Excel.Sheet');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
for i:=0 to 100 do
begin
xssz[i]:=0;
xssm[i]:='';
end;
k:=-1;
l:=1;
workBook:=eclApp.workBooks.Add;
for i:=0 to grid.Columns.Count -1 do
begin
if grid.Columns[i].visible=true then
begin
k:=k+1;
xssz[k]:=i;
for kk:=0 to qu.FieldCount -1 do
begin
if qu.Fields[kk].fieldname=grid.columns[i].fieldname then
xssz[k]:=kk;
end;
xssm[k]:=grid.columns[i].title.caption;
eclApp.Cells(l , k+1):=xssm[k];
end;
end;
with qu do
begin
first;
while not qu.eof do
begin
l:=l+1;
for j:=0 to k do
eclApp.Cells(l , j+1):=fields[xssz[j]].AsString;
qu.next;
end;
end;
WorkBook.saveas(xlsFileName);
WorkBook.Close;
eclApp.Quit;
//退出Excel Application
//释放VARIANT变量
//eclApp:=Unassigned;
ShowMessage('文件已保存!');
end;
end;