Delphi - DataSet megjelenítése Excelben

forráskód letöltése
Ebben a példában megnézzük, hogy hogyan lehet bármilyen DataSet tartalmát Excel táblázat segítségével megjeleníteni. A forrás lehet Table, Query, StoredProc vagy akár egy ADO objektum tartalma is.
Készítünk egy függvényt, amely megnyitja az Excel programot, és a paraméterként kapott DataSet tartalmát megjeleníti benne.
procedure SendToExcel(aDataSet: TDataSet);
Az Excelhez és Objektumaihoz OleVariant típusú változók segítségével csatlakozhatunk. Az OleVariant típus használatához a uses listában fel kell sorolnunk a ComObj nevét is.
Az Excel alkalmazást a CreateOleObject függvény segítségével nyithatjuk meg.
ExcelApp:=CreateOleObject('Excel.Application');
Létrehozunk egy új munkalapot.
ExcelApp.Workbooks.Add;
Először el kell helyeznünk az első sorba a fejlécet, ami a DataSet mezőinek nevéből áll. Ezt egy for ciklus segítségével és a Range objektum használatával megtehetjük.
Range:=ExcelApp.ActiveCell;
for i:=0 to aDataSet.Fields.Count-1 do begin
  Range.Value:=aDataSet.Fields[i].DisplayLabel;
  Range:=Range.Next;
end;
Ezután jöhetnek a DataSet rekordjai. Egy cellát az alábbi módon tudunk kijelölni:
Range:=ExcelApp.Range['A'+IntToStr(Row),'A'+IntToStr(Row)];
Minden egyes rekord esetén egy for ciklus segítségével végig kell mennünk az egyes oszlopok tartalmán, és az egyes értékeket be kell írnunk a megfelelő cellákba. Az értékadáshoz szintén a Range objektumot használjuk fel.
for i:=0 to aDataSet.Fields.Count-1 do begin
  Range.Value:=aDataSet.Fields[i].AsString;
  Range:=Range.Next;
end;
Végül a háttérben megnyitott Excel programot a Visible property értékének igazra állításával megjeleníthetjük.
ExcelApp.Visible:=True;