function TDataModule1.DbgridToExcell(DBGrid: TDBGrid; FileName: string; TitleLst: TStringList): boolean; var i,j,Col,cntTitle:integer; EParam:OleVariant; DocuType:Olevariant; wkbk:_WorkBook;
begin result:=false; if not DirectoryExists(ExtractFilePath(paramstr(0))+'Export') then if not CreateDir(ExtractFilePath(paramstr(0))+'Export') then begin raise Exception.Create('不能建立文件夹:Export !'); exit; end;
Try ExcelApplication1.Connect; Except ShowMessage('EXCEL文件打开失败!'); Exit; end;
Try ExcelApplication1.Visible[0]:=false; ExcelApplication1.Caption:='Excel数据文件'; EParam:=EmptyParam;
DocuType:=0; try wkbk:=ExcelApplication1.Workbooks.Add(EParam,Docutype); except begin ExcelApplication1.Disconnect; ExcelApplication1.Quit; showmessage('创建EXCEL数据表格失败'); exit; end; end; ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook); ExcelWorkSheet1.ConnectTo(Excelworkbook1.Worksheets[1] as _worksheet);
cntTitle:=TitleLst.Count; for i:=1 to cntTitle do ExcelWorkSheet1.Cells.Item[i,1]:=Trim(TitleLst.Strings[i-1]);
Col:=DBGrid.Columns.Count; //----列标题------- For j:=1 to Col do ExcelWorkSheet1.Cells.Item[cntTitle+1,j]:=DBGrid.Columns[j-1].Title.Caption ;
i:=cntTitle+2; DBGrid.DataSource.DataSet.DisableControls; DBGrid.DataSource.DataSet.First; while (Not DBGrid.DataSource.DataSet.Eof) do Begin For j:=1 to Col do ExcelWorkSheet1.Cells.Item[i,j]:=DBGrid.DataSource.DataSet.FieldByName(DBGrid.Columns[j-1].FieldName).asstring; DBGrid.DataSource.DataSet.Next; i:=i+1; End; DBGrid.DataSource.DataSet.First; DBGrid.DataSource.DataSet.EnableControls;
wkbk:=ExcelApplication1.ActiveWorkbook; DocuType:=0; FileName:=ExtractFilePath(Application.ExeName)+'Export/'+FileName+'.xls'; wkBk.Close(True,FileName,EmptyParam,DocuType);
ExcelApplication1.Disconnect; ExcelApplication1.Quit; result:=true; Except End;
end;