用OLE实现,将StringGrid中的各个单元的数据逐行读出,用OLE创建excel Application对象,写入到EXCEL的单元格内就OK了procedure TfrmDetail.NExportClick(Sender: TObject); var XlsApp,XlsSheet: Variant; I,J,k: integer; begin ShowProgressBar; if VarIsEmpty(XlsApp) then XlsApp := CreateOleObject('Excel.Application'); XLsApp.Workbooks.Add; XlsSheet := XLsApp.Worksheets['Sheet1']; k := 0; for I := 0 to dbGrid1.Columns.Count - 1 do begin if dbGrid1.Columns[i].Visible then begin XlsSheet.Cells[1,k + 1] := Fixgrid1.Columns[I].Title.Caption; k := k + 1; end; end; dbGrid1.DataSource.DataSet.first; for J := 0 to dbGrid1.DataSource.DataSet.RecordCount - 1 do begin k := 0; for I := 0 to dbGrid1.Columns.Count - 1 do begin if dbGrid1.Columns[i].Visible then begin XlsSheet.Cells[J + 2,k + 1] := dbGrid1.Columns[i].Field.AsString; k := k + 1; end; end; dbGrid1.DataSource.DataSet.Next; end; if savedlgExcel.Execute then xlssheet.saveas(savedlgExcel.FileName); XlsApp.Visible := true; Application.MessageBox(tip_ImportSuccess,'提示',mb_OK + MB_DEFBUTTON1); end;
row21+ #9 +row22+ #9 +row23+ #9 +row24的格式复制到excel即可。
var
XlsApp,XlsSheet: Variant;
I,J,k: integer;
begin
ShowProgressBar;
if VarIsEmpty(XlsApp) then
XlsApp := CreateOleObject('Excel.Application'); XLsApp.Workbooks.Add;
XlsSheet := XLsApp.Worksheets['Sheet1']; k := 0;
for I := 0 to dbGrid1.Columns.Count - 1 do
begin
if dbGrid1.Columns[i].Visible then
begin
XlsSheet.Cells[1,k + 1] := Fixgrid1.Columns[I].Title.Caption;
k := k + 1;
end;
end; dbGrid1.DataSource.DataSet.first;
for J := 0 to dbGrid1.DataSource.DataSet.RecordCount - 1 do
begin
k := 0;
for I := 0 to dbGrid1.Columns.Count - 1 do
begin
if dbGrid1.Columns[i].Visible then
begin
XlsSheet.Cells[J + 2,k + 1] := dbGrid1.Columns[i].Field.AsString;
k := k + 1;
end;
end;
dbGrid1.DataSource.DataSet.Next;
end; if savedlgExcel.Execute then
xlssheet.saveas(savedlgExcel.FileName); XlsApp.Visible := true;
Application.MessageBox(tip_ImportSuccess,'提示',mb_OK + MB_DEFBUTTON1);
end;