Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Stringlist direkt nach Excel
Krefti - Fr 08.10.10 13:36
Titel: Stringlist direkt nach Excel
Hallo zusammen,
ist es möglich eine Stringlist direkt nach Excel zu importieren ohne sie vorher abspeichern zu müssen?? Evtl. über die Zwischenablage?? Wenn ja..was muss ich mir da genau anschauen??
Gruß
Krefti
Krefti - Fr 08.10.10 14:41
Danke schon mal für eure Antworten,
also wenn ich die SL befüllt habe und dann
Delphi-Quelltext
1:
| Clipboard.AsText := slWartung.Text; |
mache bekomm ich eine ExceptViolation.
in meiner SL steht mein ganzer schöner Text drin. Woran könnte das liegen??
[Edit]
Hatte vergessen es zu erzeugen;-)
bummi - Fr 08.10.10 14:49
probier mal clipboard.SetTextBuf(Pchar(sl.text));
Krefti - Fr 08.10.10 15:02
wie gesagt, dass mit dem Text in die Zwischenablage einfügen hat ja inzwischen wunderbar geklappt.
aber das mit dem Excel öffnen und den Inhalt der Zwischenablage einfügen krieg ich irgendwie nicht hin und der oben stehende link hilft mir nicht wirklich weiter.
---
Moderiert von
Narses: Beiträge zusammengefasst---
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| try Excel := GetActiveOleObject('Excel.Application'); except try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Microsoft Excel kann nicht starten.'); exit; end; end; Excel.Visible := true; |
wenn ich das so in mein Quellcode reinschreibe bekomm ich eine exception: Vorgang nicht verfügbar. Was heißt das für mich?
hat das möglicherweise etwas mit office 2007 zu tun?
ALF - Fr 08.10.10 15:54
mh... welchen link meinst Du?
Soll die Excelapp automatisch starten oder manuell durch click auf einem Button oder wie hast Du es eingerichtet?
Gruss ALf
Krefti - Mo 11.10.10 09:41
also das befüllen der Stringlist ist eine Suche in einem Filestream wo der String in einer Funktion zusammengebastelt wird und dann in die Stringlist geschrieben wird, anschließend wird in der Prozedur die SL in die Zwischenablage gelegt (funktioniert). Dann soll Excel automatisch starten und die Zwischenablage eingefügt werden. Das mit dem Einfügen in Excel fehlt noch.
Kann mir da noch jemand helfen??
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Clipboard.AsText := slWartung.Text; try Excel := GetActiveOleObject('Excel.Application'); except try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Microsoft Excel kann nicht starten.'); exit; end; end; Excel.Visible := true; |
Danke schon mal
Krefti - Mi 13.10.10 15:19
wollte mal nochmal fragen ob mir evtl. jemand helfen kann??
Narses - Mi 13.10.10 15:54
Moin!
Krefti hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| try Excel := GetActiveOleObject('Excel.Application'); except try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Microsoft Excel kann nicht starten.'); exit; end; end; Excel.Visible := true; | wenn ich das so in mein Quellcode reinschreibe bekomm ich eine exception: Vorgang nicht verfügbar. Was heißt das für mich?
hat das möglicherweise etwas mit office 2007 zu tun? |
Probier das mal ausserhalb der IDE zu starten, kommt dann immer noch eine Exception? Ich rate mal: nein. ;) (ggfs. also bei diesem Exception-Typ das Stoppen in der IDE abschalten, dann klappt´s da auch)
Ich verwende ähnlichen Code auch in meinen Projekten, läuft, auch mit O2k7. :nixweiss:
cu
Narses
Chemiker - Mi 13.10.10 21:49
Hallo Krefti,
wenn die Fehlermeldung kommt kann man auch einfach Fortsetzen drücken und Excel startet. Wenn Du Deine Stringlist nicht in einem geöffneten Excel-Sheet einfügen willst, sondern immer eine neue Excel-Instanz aufmachen willst reicht es vollkommen wenn Du mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| try olevEXCEL := CreateOleObject('Excel.Application'); except ShowMessage('Excel konnte nicht gestartet werden !'); Exit; end; olevEXCEL.Visible:= TRUE; |
eine neue Instanz erstellst. Damit umgehst Du auch Ärger, wenn der Kunde grade die neuste Bilanz offen hat und dann Dein Programm diese mit den Eingaben von Deiner Stringlist kaputt macht.
Bis bald Chemiker
Krefti - Do 14.10.10 08:06
Ist es eigentlich normal, dass wenn man Excel startet, nichts macht, mein Programm verlassen, dass dann Excel automatisch wieder zugeht??
Sobald ich allerdings eine neue Arbeitsmappe geöffnet habe bleibt es offen.
wie öffne ich über Delphi direkt eine neue Arbeitsmappe??
wie füge ich meinen Inhalt der Zwischenablage automatisch in die Arbeitsmappe ein? Geht das direkt überhaupt?
Danke schon mal.
Gruß
Krefti
bummi - Do 14.10.10 08:43
Delphi-Quelltext
1: 2: 3: 4:
| FExcel := CreateOleObject('Excel.Application'); if length(FileName)>0 then FWorkbook:= FExcel.WorkBooks.Open(Filename) else FWorkbook:=FExcel.WorkBooks.Add; FActiveSheet:=FExcel.Sheets[1]; FActiveSheet.Paste; |
Krefti - Do 14.10.10 09:18
Vielen Dank für eure hilfe!
Gruß
Krefti
Chemiker - Do 14.10.10 20:39
Hallo Krefti,
ist jetzt vielleicht eine blöde Frage, aber willst Du nur Text nach Excel exportieren? Und warum gehst Du den Umweg über eine Stringlist und schreibst nicht direkt die Daten nach Excel.
Bis bald Chemiker
bummi - Do 14.10.10 20:53
@Chemiker
wenn ich große Datenmengen ohne Formatierungen nach Excel schreiben soll z.B. Tabellenexport aus Grids mache ich es auch so ist um Welten schnellen als Zellen zu beschreiben.
Chemiker - Do 14.10.10 21:03
Hallo bummi,
wenn ich große Datenmengen aus einer Datenbank nach Excel übertragen, erstelle ich selber die XLS-Datei, hat denn großen Vorteil das Excel dafür nicht auf den PC vorhanden sein muss.
Bis bald Chemiker
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!