Activex OLE Delphi

//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;