以下是一个将DBGrid 中数据转入Excel的过程: procedure Dbtoexcel(dbgrid: Tdbgrid); var i,j,iCol : Byte ; ExcelApp,MyWorkbook : Variant; DataSet : TDataSet; begin try ExcelApp:=CreateOleObject('Excel.Application'); MyWorkBook:=CreateOleobject('Excel.Sheet'); ExcelApp.Visible := true; except on Exception do raise exception.Create('错误,请确认已经安装EXCEL') end; DataSet := Dbgrid.DataSource.DataSet; MyworkBook:=ExcelApp.workBooks.Add; iCol := 1 ; for j:=0 to dbgrid.Columns.Count - 1 do {标题} if DBGrid.Columns.Items[j].Visible then begin MyWorkBook.WorkSheets[1].Cells[1,iCol].Value := DBGrid.Columns.Items[j].Title.Caption ; Inc(iCol); end; i := 2; DataSet.DisableControls ; DataSet.First; while not DataSet.eof do begin iCol := 1; for j:=0 to dbgrid.fieldcount-1 do if DBGrid.Columns.Items[j].Visible then begin //如果该列隐藏,则不输入Excel MyWorkBook.WorkSheets[1].Cells[i,iCol].Value := DataSet.FieldByName(dbgrid.Fields[j].FieldName).AsString; Inc(iCol); end; Inc(i); DataSet.Next end; DataSet.Enablecontrols; ExcelApp.Visible := true; ExcelApp.Quit; end;
procedure Dbtoexcel(dbgrid: Tdbgrid);
var
i,j,iCol : Byte ;
ExcelApp,MyWorkbook : Variant;
DataSet : TDataSet;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
ExcelApp.Visible := true;
except
on Exception do raise exception.Create('错误,请确认已经安装EXCEL')
end;
DataSet := Dbgrid.DataSource.DataSet;
MyworkBook:=ExcelApp.workBooks.Add;
iCol := 1 ;
for j:=0 to dbgrid.Columns.Count - 1 do {标题}
if DBGrid.Columns.Items[j].Visible then begin
MyWorkBook.WorkSheets[1].Cells[1,iCol].Value :=
DBGrid.Columns.Items[j].Title.Caption ;
Inc(iCol);
end;
i := 2;
DataSet.DisableControls ;
DataSet.First;
while not DataSet.eof do
begin
iCol := 1;
for j:=0 to dbgrid.fieldcount-1 do
if DBGrid.Columns.Items[j].Visible then begin //如果该列隐藏,则不输入Excel
MyWorkBook.WorkSheets[1].Cells[i,iCol].Value :=
DataSet.FieldByName(dbgrid.Fields[j].FieldName).AsString;
Inc(iCol);
end;
Inc(i);
DataSet.Next
end;
DataSet.Enablecontrols;
ExcelApp.Visible := true;
ExcelApp.Quit;
end;
http://expert.csdn.net/Expert/topic/2136/2136929.xml?temp=.2077448
var xlsFilename :string;
eclApp,WorkBook :variant ;
a_filedNo,i,j :integer;
begin
a_filedNo :=Form3.DBGrid4.FieldCount ;
xlsFileName :='关于学生成绩基本信息.xls'; try
eclApp :=CreateOleObject('Excel.Application');
WorkBook :=CreateOleObject('Excel.Sheet');
except
showmessage('您的系统没有安装MS EXCEL');
exit;
end; try
WorkBook :=eclApp.workBooks.add ;
for i :=1 to a_FiledNo do //转化字段名;
begin
//eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
end; Form3.DBGrid4.DataSource.DataSet.First ;
for i :=1 to Form3.a_recno do //Form3.a_recno begin
for j :=1 to a_filedNo do //转化一个记录
begin
eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
end;
Form3.DBGrid4.DataSource.DataSet.Next ;
end;
try
WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
WorkBook.close;
showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
except
showmessage('保存文件出错');
end;
except
showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
WorkBook.close;
eclApp.quit;
eclApp :=Unassigned;
end;
end;