var asheet,range:variant; i,K,M,N,y :integer; ls_FileName:string; tsList :TStringList; s :string; begin if SaveDialog1.Execute then begin Screen.Cursor:=crHourGlass; ls_FileName:=SaveDialog1.FileName; ExcelApplication1.Visible[0]:=False; ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0); asheet:=ExcelApplication1.Worksheets.Item[1]; i:=frmDataModule.QProject.FieldCount; range:=asheet.range[asheet.cells[1,1],asheet.cells[1,i]]; range.merge; range.HorizontalAlignment:=xlCenter; range.Font.Size:=14; frmDataModule.Tstatement.Locate('Flags',1,[]); range.value:=Trim(frmDataModule.Tstatement.FieldByName('sqlName').Value); for i:=0 to DBGrid1.Columns.Count-1 do asheet.cells[2,i+1].value:=Trim(DBGrid1.Columns.Items[i].Title.Caption); K:=1; N:=DBGrid1.Columns.count; I:=DBGrid1.DataSource.DataSet.RecordCount; tsList:=TStringList.Create; try DBGrid1.DataSource.DataSet.first; while not DBGrid1.DataSource.DataSet.Eof do begin s:=''; for y:=0 to n-1 do begin s:=s+Trim(DBGrid1.DataSource.DataSet.Fields[y].AsString)+#9; Application.ProcessMessages; end; tsList.Add(s); DBGrid1.DataSource.DataSet.next; end; Clipboard.AsText:=tsList.Text; finally tsList.Free; end; ExcelApplication1.Disconnect; asheet.cells[3,1].select; aSheet.Paste; range:=asheet.range[asheet.cells[2,1],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount+2,DBGrid1.DataSource.DataSet.FieldCount]]; range.select; range.borders.linestyle:=1; for i:=1 to DBGrid1.DataSource.DataSet.FieldCount do begin range:=asheet.range[asheet.cells[1,i],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount,i]]; range.EntireColumn.AutoFit; end; aSheet.Saveas(ls_FileName); MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK); Screen.Cursor:=crDefault; ExcelApplication1.Quit; ExcelApplication1.Disconnect; aSheet:=Unassigned; //释放VARIANT变量 DBGrid1.DataSource.DataSet.First;end; end; 这是我原来写的一个例子,测试通过
asheet,range:variant;
i,K,M,N,y :integer;
ls_FileName:string;
tsList :TStringList;
s :string;
begin
if SaveDialog1.Execute then begin
Screen.Cursor:=crHourGlass;
ls_FileName:=SaveDialog1.FileName;
ExcelApplication1.Visible[0]:=False;
ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
asheet:=ExcelApplication1.Worksheets.Item[1];
i:=frmDataModule.QProject.FieldCount;
range:=asheet.range[asheet.cells[1,1],asheet.cells[1,i]];
range.merge;
range.HorizontalAlignment:=xlCenter;
range.Font.Size:=14;
frmDataModule.Tstatement.Locate('Flags',1,[]);
range.value:=Trim(frmDataModule.Tstatement.FieldByName('sqlName').Value);
for i:=0 to DBGrid1.Columns.Count-1 do
asheet.cells[2,i+1].value:=Trim(DBGrid1.Columns.Items[i].Title.Caption);
K:=1;
N:=DBGrid1.Columns.count;
I:=DBGrid1.DataSource.DataSet.RecordCount;
tsList:=TStringList.Create;
try
DBGrid1.DataSource.DataSet.first;
while not DBGrid1.DataSource.DataSet.Eof do
begin
s:='';
for y:=0 to n-1 do
begin
s:=s+Trim(DBGrid1.DataSource.DataSet.Fields[y].AsString)+#9;
Application.ProcessMessages;
end;
tsList.Add(s);
DBGrid1.DataSource.DataSet.next;
end;
Clipboard.AsText:=tsList.Text;
finally
tsList.Free;
end;
ExcelApplication1.Disconnect;
asheet.cells[3,1].select;
aSheet.Paste;
range:=asheet.range[asheet.cells[2,1],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount+2,DBGrid1.DataSource.DataSet.FieldCount]];
range.select;
range.borders.linestyle:=1;
for i:=1 to DBGrid1.DataSource.DataSet.FieldCount do begin
range:=asheet.range[asheet.cells[1,i],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount,i]];
range.EntireColumn.AutoFit;
end;
aSheet.Saveas(ls_FileName);
MessageBox(Application.Handle,'数据导出完毕!','系统提示',MB_ICONINFORMATION or MB_OK);
Screen.Cursor:=crDefault;
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
aSheet:=Unassigned; //释放VARIANT变量
DBGrid1.DataSource.DataSet.First;end;
end;
这是我原来写的一个例子,测试通过
DevExpress.QuantumGrid3.22.Delphi7