Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid & Excel (https://www.delphipraxis.net/108774-stringgrid-excel.html)

BarcB 19. Feb 2008 13:07


StringGrid & Excel
 
Ich habe diesen Post bereits gelesen:
http://www.delphipraxis.net/internal...ct.php?t=43640

bisheriger Code:
Delphi-Quellcode:
procedure ExcelFuellen;
var
  Excel : Variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Application.SheetsInNewWorkBook := 8; //Die 8 is die Anzahl der Sheets
  Excel.Workbooks.Add;
  Excel.Sheets.Add; //einen neuen Sheet hinzufügen
  Excel.Sheets[1].Name := 'DP Sheet'; //Hierbei ist 1 das erste Sheet 2 das zweite usw.
  Excel.Visible := true;
  Excel := unassigned; // Frage: was bedeutet das?
end;
Jetzt würde ich gern einen Button haben, der immer bei einem Klick, in das offene Excel eine Zeile bzw einen Wert an der angegebenen Stelle im offenen Excel Dokument hinzufügt. Leider habe ich es nur geschafft beim Aufruf von Excel Werte zu übergeben.
Ist dies auch anders möglich?


Danke

Chemiker 19. Feb 2008 18:06

Re: StringGrid & Excel
 
Hallo BarcB;

Unter TForm die Variable deklarieren:

Delphi-Quellcode:
 private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Excel: Variant;
Und dann einfach unter ButtonClick schreiben:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Excel.Worksheets['Tabelle1'].Activate;
  Excel.cells[10,20]:= 'Testausgabe';
end;
Bis bald Chemiker

sirius 19. Feb 2008 18:13

Re: StringGrid & Excel
 
Zitat:

Zitat von BarcB
Delphi-Quellcode:
 Excel := unassigned; // Frage: was bedeutet das?

Objekt löschen. Zumindest deinen Instanzzeige aufgeben
Bei einer "richtigen" Klasse würde man Excel.free aufrufen.

Chemiker 19. Feb 2008 18:29

Re: StringGrid & Excel
 
Hallo,

wenn das aufrufende Programm geschlossen wird, sollt man Excel auch schließen. Für diesen Fall würde ich diesen Code empfehlen.

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if not VarIsEmpty(Excel) then
  begin
    Excel.DisplayAlerts:= FALSE;
    Excel.Quit;
    Excel := Unassigned;
  end;
end;
Bis bald Chemiker

BarcB 19. Feb 2008 18:34

Re: StringGrid & Excel
 
sorry wurde ja beantwortet

Chemiker 19. Feb 2008 18:40

Re: StringGrid & Excel
 
Hallo,

Delphi – Hilfe benutzen, „Unassigned“ markieren und STRG-F1 Taste drücken.

Excel.Visible := true;
Excel := unassigned;

In dieser Kombination ist das Blödsinn, weil Du danach keinen Zugriff auf Excel mehr hast.

Bis bald Chemiker

BarcB 19. Feb 2008 19:22

Re: StringGrid & Excel
 
Super, dass funktioniert schonmal richtig gut!

Nun noch eine Frage: Wenn man aus Delphi Excel zum speichern bringen will
"Excel.ActiveWorkbook.SaveAs('daten.xls');"

dann speichert Excel die Datei im voreingestellten Speicherordner für Excel Dateien, bei mir Eigene Dateien.
Ich möchte die Datei aber gern im selben Verzeichnis, wie in dem das Programm läuft, speichern.

Chemiker 19. Feb 2008 19:54

Re: StringGrid & Excel
 
Hallo,

mit

Ordner:= ExtractFilePath(ParamStr(0));

Bis bald Chemiker

BarcB 19. Feb 2008 20:33

Re: StringGrid & Excel
 
Vielen Dank erstmal, hat mir alles sehr geholfen!
Bis zu nächsten Frage!

BarcB 29. Feb 2008 17:42

Re: StringGrid & Excel
 
Empfiehlt es sich die Excel Verbindung mit
Excel := CreateOleObject('Excel.Application');
aufzubauen oder lieber gleich die TExcelApplication Komponente nutzen?

Wenn ich jetzt ein bestehendes Excel Dokument laden möchte, wie stellt man am besten die Verbindung zu diesem her?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr.
Seite 1 von 3  1 23      

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