Einzelnen Beitrag anzeigen

Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 

Excel per OLE fernsteuern

  Alt 6. Jan 2005, 12:46
Hier mal ein kleines Tutorial für die Verwendung der OLE-Excel-Schnittstelle

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

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
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]
  Mit Zitat antworten Zitat