CPALEB wird noch weiter komplettiert! 02.02.2009Zweck
Mit Hilfe der Komponente TAdapterExcel können Daten aus der Datenbank nach Excel gesendet werden.
Dazu wird ein Table Objekt benötigt und jeder Datensatz innerhalb der Table muss manuell durchgelaufen werden, die Daten werden Zeile für Zeile ins Excel exportiert. Nach der Freigabe des TAdapterExcel Objekts im Code bleibt Excel geöffnet, erst beim Schliessen fragt Excel nach, ob man die Datei speichern möchte oder nicht.
Beispiel
Folgendes Beispiel soll die Funktionsweise der TAdapterExcel verdeutlichen.
procedure buttonExcelExportEinheit_OnClick(Sender: Integer);
var
aExcel: TAdapterExcel;
i: integer;
aRow: Integer;
aLastTitel: String;
aSumme: Double;
begin;
TableExportEinheit.setstringparam('OB_ID', self.getparam('OB_ID'));
TableExportEinheit.readData;
if TableExportEinheit.recordcount > 0 then
TableExportEinheit.First;
aExcel := TAdapterExcel.Create;
try
aRow := 1;
//Flag setzen damit Excel nicht geschlossen wird beim Freigeben der TAdapterExcel Klasse
aExcel.CloseOnFree := false;
aExcel.Cell'B1'.HorizontalAlign := thaCenter;
aExcel.Cell'B1'.Width := 15.5;
aExcel.Cell'B1'.WordWrap := true;
aExcel.Cell'A1'.Value := 'EH_Nummer';
aExcel.Cell'A1'.Font.Style := fsBold;
aExcel.Cell'B1'.Value := 'Top';
aExcel.Cell'B1'.Font.Style := fsBold;
aExcel.Cell'C1'.Value := 'Geschoss';
aExcel.Cell'C1'.Font.Style := fsBold;
while not TableExportEinheit.EOF do
begin
aRow := aRow + 1;
aExcel.Cell'A' + inttostr(aRow).Value := TableExportEinheit.FieldByName('EH_NUMMER').AsString;
aExcel.Cell'A' + inttostr(aRow).HorizontalAlign := thaRight;
aExcel.Cell'B' + inttostr(aRow).Value := TableExportEinheit.FieldByName('EH_TOP').AsString;
aExcel.Cell'B' + inttostr(aRow).HorizontalAlign := thaRight;
aExcel.Cell'C' + inttostr(aRow).Value := TableExportEinheit.FieldByName('EH_STOCKWERK').AsString;
aExcel.Cell'C' + inttostr(aRow).HorizontalAlign := thaRight;
TableExportEinheit.Next;
end;
aExcel.ShowExcel;
finally
aExcel.Free;
end;
end;
Excel wird zeilenweise befüllt, dazu geht man mit einem Zähler durch die Datenmenge und spricht die Excel Zellen über den Zähler an. Zum Beispiel erster Datensatz kommt in Zellen A2,B2,C2 - der 5. Datensatz dann in Zellen A6,B6,C6 usw.
Tipps:
- Die Zellen im Excel können auch formatiert werden (Schrift, Ausrichtung, WordWrap, Breite etc..) siehe Beispiel oben.
- Das Excel Objekt kann im Code freigegeben werden ohne dass Excel selbst sich schliesst, wenn man folgenden Schalter setzt:
aExcel.CloseOnFree := false;