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


ALF - Fr 08.10.10 14:07

Hi, hat Delphi7< nicht von Hause aus Word/Excel Komponenten dabei?
So könntest Du die Tabelle, wo es wahrscheinlich hin soll, direkt ansprechen!
Oder schau dir mal diesen link [http://www.delphi-treff.de/tipps/comoledde/andere-office-anwendungen/excel-mit-ole-automation-steuern/] dazu an.
Gruss ALf


JoelH - Fr 08.10.10 14:08

Stringlist to Clipboard
http://www.delphi-forum.de/viewtopic.php?t=52479&highlight=stringlist+clipboard

Clipboard to Excel
http://www.djpate.freeserve.co.uk/AutoExcl.htm#CopyData


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 user profile iconNarses: 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!

user profile iconKrefti hat folgendes geschrieben Zum zitierten Posting springen:

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