Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Sonstiges (https://www.delphipraxis.net/45-library-sonstiges/)
-   -   Excel per OLE fernsteuern (https://www.delphipraxis.net/37480-excel-per-ole-fernsteuern.html)

Boombuler 6. Jan 2005 12:46


Excel per OLE fernsteuern
 
Hier mal ein kleines Tutorial für die Verwendung der OLE-Excel-Schnittstelle

für Excel brauchen wir zunächst folgende Units:

Delphi-Quellcode:
uses Variants, ComObj;
dann bauen wir erst mal eine Verbindung zu Excel auf
Delphi-Quellcode:
procedure ExcelFuellen;
var
  Excel : Variant;
begin
  Excel := CreateOleObject('Excel.Application');
  //Hier kommt der weitere Code hin
end;
Nun brauchen wir erst mal Tabellen auf denen wir arbeiten können (Sheets)
dazu stehen uns 2 Möglichkeiten bereit:

a) Wir ändern die Starteinstellung mit der Excel ein neues Workbook anlegt und öffnen dann ein Workbook:
Delphi-Quellcode:
excel.Application.SheetsInNewWorkBook := 8; //Die 8 is die Anzahl der Sheets
Excel.Workbooks.Add;
oder

b) Wir öffnen ein neues Workbook und fügen entsprechend viele neue Sheets hinzu
Delphi-Quellcode:
Excel.Sheets.Add; //einen neuen Sheet hinzufügen
nun sollten wir dem Sheet einen Namen geben:
Delphi-Quellcode:
Excel.Sheets[1].Name := 'DP Sheet'; //Hierbei ist 1 das erste Sheet 2 das zweite usw.
//von nun an können wir unser Sheet auch über den gegebenen Namen ansprechen! zB:
Excel.Sheets['DP Sheet'];
Nun wollen wir mal ein paar Zeichen und Zahlen in unser Excel schreiben
Delphi-Quellcode:
var
  row, column: Integer;

row   := 1;
column := 2;
Excel.Sheets['DP Sheet'].Cells[row,column].Value := 'Hallo';
Excel.Sheets['DP Sheet'].Cells[1,3].value := 5.23; //Da Value vom Typ Variant is können wir hier fast alles reinschreiben
Jetzt können wir zB auch mal die Schrift fett machen:
Delphi-Quellcode:
Excel.Range['A1:B4'].Select;     //Den Bereich A1 bis B4 makieren
Excel.Selection.Font.Bold := true;//und im Makierten Bereich die Schriftdicke ändern
Oder auch mal eine Formel einfügen:
Delphi-Quellcode:
Excel.Cells[row,column].select;
Excel.ActiveCell.FormulaR1C1 := '=R2C1+R3C1' // Rechnet A2 + A3

Wenn wir Excel nun Anzeigen wollen geht das so:
Delphi-Quellcode:
Excel.Visible := true;
Excel := unassigned;
wir können natürlich auch direkt speichern ohne es anzuzeigen
Delphi-Quellcode:
Excel.ActiveWorkbook.SaveAs('C:\Blub.xls');
Excel.Quit; //Beendet Excel
Excel := Unassigned;


Tipp:
wenn ihr andere / komplexere Funktionen von Excel nutzen wollt (ich kann hier natürlich nicht auf alle eingehen)
(zB Rahmen ziehen, Zellenfarbe ändern, anders krankes zeug machen)
solltet ihr wie folgt vorgehen:
1) Excels Macroaufzeichnung starten
2) In Excel machen wovon du den Code willst
3) Macroaufzeichnung beenden
4) Den VB Code vom Macro angucken (Extras / Macro / Macros... / (Macro auswählen) / Bearbeiten)
5) In Delphi übersetzten (is recht ähnlich achtet nur auf " -> ' oder = -> := )
6) Code Optimieren (der Macro editor schmeiß teilweise unnützen code mit aus)
7) Glücklich sein!

MfG
Boombuler

[edit=Matze]Code formatiert. Mfg, Matze[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz