![]() |
Excel öffnen über Button in Delphi+ Vorbelegen mit xls-Datei
Morgen @all,
folgendes kleines Problem: Ich habe in meiner Anwendung die Möglichkeit den Inhalt des Grids, ob gefiltert oder nicht, per Knopfdruck nach Excel zu exportieren. Dabei öffnet sich dann der Save-Dialog und man kann sich den Speicherplatz aussuchen und am Ende liegt dort eine xls-Datei mit dem Exportierten Inhalt. Exportiert wird von mir über eine Funktion die das cxdbGrid mitliefert und zwar folgendermaßen:
Delphi-Quellcode:
So, jetzt würde ich aber noch gerne einen Button haben mit dem ich dann, bei Bedarf, Excel öffnen kann und gleichzeitig die zuvor gespeicherte (Exportierte) Datei dabei öffne und Anzeigen lasse.
procedure Tfrmzeiterfassunguebersicht.cxbtnexcelexportClick(Sender: TObject);
begin if SaveDialog1.Execute then ExportGrid4ToExcel(savedialog1.filename,cxgridzeiterfassungansicht,True,True,False,'xls'); end; Mein Problem jetzt ist das ich garnicht weis wie ich das machen soll und welche Elemente ich benötige, so wie ich das in der Hilfe verstanden habe brauche ich eine ExcelOLEObjekt, aber wenn ich das einbinde habe ich keinen plan was ich machen muss um Excel zu öffnen, genauso wenig weis ich wie ich dabei das Excel Dokument öffne und wem ich den Pfad dazu übergeben muss. Kann mir dabei evt. jemand helfen ? Gruss Darkchild |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
Zitat:
Delphi-Quellcode:
procedure TForm1.OpenSelectedFile(FName : string);
var p : array[0..1024] of char; begin StrPCopy(p, FName); ShellExecute(Application.Handle, 'open', p, nil, nil, SW_SHOW); end; |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
|
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
@dfried
Muss ich dafür noch zusätzlich eines der Delphi-Elemente wie z.B. ExcelOLEObjekt oder so benutzen oder kann ich dann darauf verzichten ? Oder muss ich noch was in die Uses einbinden ? Denn ansonsten kennt der den ShellExcecute-Befehl nicht ! Gruss Darkchild |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
Also mir geht es nicht darum Excel in Delphi Anzeigen zulassen, sondern ich möchte per klick auf einen Button der in meiner Delphi Anwendung liegt, Excel aufrufen und öffnen(gemeint ist aber die tatsächliche Excel Anwendung).
Gruss Darkchild |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
hi dark,
versuche es mal mit:
Delphi-Quellcode:
:zwinker:
uses ShellApi
greetz Lun P.S: Mit ShellExecute öffnest du Excel und lässt es anzeigen, also genau das was du möchtest. |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
Lun hat die Antwort zwar schon gegeben, aber zur Vervollständigung: du brauchst ansonten keine Komponenten oder irgendwas auf dein Formular zu ziehen und Excel geht auch nicht in deiner Applikation auf. Im Prinzip verhält sich das ganze so, wie wenn du im Explorer einen Doppelklick auf die Excel-Datei machen würdest.
|
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
@Lun
Danke, genau das war es was mir gefehlt hat, klappt jetzt alles so wie es soll. @dfried Auch Dir danke. Ihr zwei habt mir echt weitergeholfen. :thumb: Gruss Darkchild :cheers: :coder: |
Re: Excel öffnen über Button in Delphi+ Vorbelegen mit xls-D
Hi @ll,
habe noch eine kleine Anmerkung zum ShellExecute Befehl:
Delphi-Quellcode:
Mit dem Power Point Viewer 2003 hatte ich vor kurzem das Problem das dieser nicht öffnen wollte,
ShellExecute(Application.Handle, 'open', p, nil, nil, SW_SHOW);
der Grund dafür war, das für den Dateityp von Microsoft nur der Wert Show eingetragen war und nicht open. Gelöst habe ich das Problem, in dem ich den wert open auf nil gesetzt habe, dadurch wird der Standard Befehl für den Dateitypen aufgerufen der in den meisten Fällen anzeigen oder eben öffnen ist. Es bleibt dir aber überlassen welchen Wert du da setzt. greetz Lun |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz