dbgrid数据导出为excel
uses Excel2000,ComObj; procedure F_Form.Button1Click(Sender: TObject); var myExcel:TExcel; Int_i,Int_j,rowCount,columnCount:Integer; ExcelId:Variant; begin try ExcelId:=CreateOleObject('Excel.Application'); except on Exception do raise Exception.Create('无法创建报表,请确认是否安装EXCEL'); end; if DBGrid4.DataSource.DataSet.RecordCount<>0 then begin rowCount:=DBGrid4.DataSource.DataSet.RecordCount; columnCount := DBGrid4.FieldCount; try Excelid.Visible := True; Excelid.WorkBooks.Add; Excelid.WorkSheets[1].Range['A1:I1'].Merge(True); Excelid.WorkSheets[1].Cells[1,1].Value := 'xxx公司'; Excelid.WorkSheets[1].Range['A2:I2'].Merge(True); Excelid.WorkSheets[1].Cells[2,1].Value := 'xxx信息统计表'; excelid.worksheets[1].cells[3,1].value:='1; excelid.worksheets[1].cells[3,2].value:='2; excelid.worksheets[1].cells[3,3].value:='3'; excelid.worksheets[1].cells[3,4].value:='4; excelid.worksheets[1].cells[3,5].value:='5; excelid.worksheets[1].cells[3,6].value:='6; excelid.worksheets[1].cells[3,7].value:='7; excelid.worksheets[1].cells[3,8].value:='8'; excelid.worksheets[1].cells[3,9].value:='9; excelid.worksheets[1].cells[3,10].value:='10; Excelid.WorkSheets[1].Range['A1:T3'].Font.Name :='宋体'; Excelid.WorkSheets[1].Range['A1:I2'].Font.Size :=12; Excelid.WorkSheets[1].Range['A2:T3'].Font.Size :=10; Excelid.WorkSheets[1].Range['A1:T3'].Font.Bold :=True; DBGrid4.DataSource.DataSet.First(); for Int_i:=0 to rowCount do begin for Int_j:=0 to columnCount-1 do begin ExcelId.worksheets[1].cells[Int_i+4,int_j+1].value:= DBGrid4.DataSource.DataSet.FieldByName(DBGrid4.Columns.Items[int_j].FieldName).AsString; end; DBGrid4.DataSource.DataSet.Next(); end; Excelid.WorkSheets[1].range['A1:T3'].HorizontalAlignment := $FFFFEFF4; Excelid.worksheets[1].range['A1:T3'].VerticalAlignment := $FFFFEFF4; Excelid.Columns.AutoFit; finally end; end; end;
从dbgrid导出数据保存成excel文件
实验了,很好用 function TForm1.ExportDBGrid(DBGrid: TDBGrid; SheetName: string): boolean;//直接保存,不显示EXCEL var c, r, i, j: integer; app: Olevariant; TempFileName, ResultFileName: string; begin try result := True; app := CreateOLEObject('Excel.application'); // app.WorkBooks.Add(xlWBatWorkSheet); except Application.MessageBox('Excel没有正确安装!','警告',MB_OK); result := False; exit; end; SaveDialog1.DefaultExt := 'xls'; SaveDialog1.FileName := SheetName; if SaveDialog1.Execute then TempFileName := SaveDialog1.FileName else Exit; app.Workbooks.add; app.Visible := false; Screen.Cursor := crHourGlass; DBGrid.DataSource.DataSet.First; c := DBGrid.DataSource.DataSet.FieldCount; r := DBGrid.DataSource.DataSet.RecordCount; Application.ProcessMessages; for i := 0 to c - 1 do app.cells(1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].DisplayLabel; for j := 1 to r do begin for i := 0 to c - 1 do app.cells(j + 1, 1 + i) := DBGrid.DataSource.DataSet.Fields[i].AsString; DBGrid.DataSource.DataSet.Next; end; ResultFileName := TempFileName; if ResultFileName = '' then ResultFileName := '数据导出'; if FileExists(TempFileName) then DeleteFile(TempFileName); app.Activeworkbook.saveas(TempFileName); app.Activeworkbook.close(false); app.quit; app := unassigned; end; procedure TForm1.Button2Click(Sender: TObject); //按钮保存 begin try Screen.Cursor := crHourGlass; ExportDBGrid(DBGrid1, '导出数据'); //暂时将导出的文件名称为“导出数据”(的execl文件) finally Screen.Cursor := crDefault; end; end;