Mega Code Archive

 
Categories / Delphi / Activex OLE
 

Tquery de yapılan sorgulamayı excele gönderen procedure

//eray_ayyildiz@hotmail.com http://www.programlama.com ' dan alınmıştır... { Bu procedureun amacı, TQuery'de sorgulanıp DBGrid'e getirilen verileri Excel' e göndermektir. Kullanılan componentler: TQuery, TDataSource, TDbGrid, TExcelQpplicatin. Sorgulamadan sonra procedure şu şekilde çağırılır: SendExcel(DbGrid_ismi,Query_ismi,ExcelApplication_ismi)} {"Format" ; Excel hücresinin biçimini belirtir. "@", "Metin" biçimini ifade eder. Diğer biçimlerin nasıl ifade edildiğini görmek için; Excelde hücre biçimlendirde Kategori olarak "isteğe uyarlanmış" seçilerek görülebilir. } procedure SendExcel(rapor_grid:TDbGrid;rapor_select:TQuery;ExcelApplication1:TExcelApplication); var RangeE: Excel2000.Range; I, Row: Integer; Bookmark: TBookmarkStr; Format: OleVariant; begin ExcelApplication1.Visible [0] := False; ExcelApplication1.Workbooks.Add(null,0); RangeE := ExcelApplication1.ActiveCell; Format := '@'; for I := 0 to rapor_select.Fields.Count - 1 do begin RangeE.Value := rapor_select.Fields[I].AsString; RangeE := RangeE.Next; rapor_select.Next; end; Row := 1; RangeE := ExcelApplication1.Range ['A' + IntToStr (Row), 'A' + IntToStr (Row)]; for I := 0 to rapor_grid.FieldCount - 1 do begin RangeE.NumberFormat := Format; RangeE.Value := rapor_grid.Fields[I].DisplayName; RangeE := RangeE.Next; end; inc(Row); try Bookmark := rapor_select.Bookmark; try rapor_select.First; while not rapor_select.EOF do begin RangeE := ExcelApplication1.Range ['A' + IntToStr (Row), 'A' + IntToStr (Row)]; for I := 0 to rapor_select.Fields.Count - 1 do begin RangeE.NumberFormat := Format; RangeE.Value := rapor_select.Fields [I].AsString; RangeE := RangeE.Next; end; rapor_select.Next; Inc (Row); end; finally rapor_select.Bookmark := Bookmark; end; finally rapor_select.EnableControls; ExcelApplication1.Visible [0] := True; ExcelApplication1.Disconnect; end; end;