Delphi-PRAXiS

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 Richtext mit Formatierung in Excel einfügen (https://www.delphipraxis.net/97736-richtext-mit-formatierung-excel-einfuegen.html)

Reinhardtinho 15. Aug 2007 09:48


Richtext mit Formatierung in Excel einfügen
 
Hallo allerseits,

Bei meinem Programm kann man Daten in Excel schreiben (Zahlen, Formeln, usw).
Nun sollen auch Textbausteine in Excel eingefügt werden.
Ich habe diese Textbausteine in einem RichEdit vom Typen TJvRichEdit.
Nun möchte ich den Richtext mit Formatierungen und Grafiken in Excel einfügen.
Zugreifen tue ich mit Delphi 5 und TExcelApplication über die COM-Schnittstelle.

Ich habe den Richtext in die Zwischenablage kopiert und in die Excelzelle eingefügt, allerdings gehen dabei die Formatierung verloren und Bilder werden auch nicht angezeigt.

Delphi-Quellcode:
var
  WS : _WorkSheet;
begin
  ...

  Form_TmpRichEdit.JvRichEdit1.SelectAll;
  Form_TmpRichEdit.JvRichEdit1.CopyToClipboard;

  WS.Cells.Item[2,2].Select;
  WS.Paste(EmptyParam, EmptyParam, LCID);

  ...
end;
Hat jemand eine Idee, wie man den Richtext mit Formatierung in Excel einfügen kann und ist bereit diese mir mitzuteilen?

Danke.

MFG
Lorenz

marabu 15. Aug 2007 10:42

Re: Richtext mit Formatierung in Excel einfügen
 
Hallo Lorenz,

hast du schonmal versucht die Zwischenablage per Hand (Strg+V) in eine Excel-Zelle einzufügen?

Ich kann leider nicht mit Excel testen, aber WordPad zeigt mir, dass Bilder und Textformate im RTF-Format per Zwischenablage aus JvRichEdit übernommen werden können und OpenOffice übernimmt nur den Text mit Formaten, die Bilder werden ausgeklammert. Vielleicht kann auch Excel compund documents in einer Zelle nur als Objekt abbilden?

Grüße vom marabu

Reinhardtinho 15. Aug 2007 10:58

Re: Richtext mit Formatierung in Excel einfügen
 
Wenn ich vom RichEdit manuell in die Zwischenablage kopiere, dann verliere ich auch die Formatierung, wenn ich es in Excel einfüge.

Wenn ich aber aus der Zwischenablage in Word einfüge, dies dann wieder in die Zwischenablage kopiere und das dann in Excel einfüge, wird die Formatierung beibehalten ... komischerweise.

Also muss ich entweder noch Word dazwischenschalten, was ich allerdings als sehr unschön empfinde oder - ich habe grade noch einen Tipp erhalten - den Zelltypen in Excel ändern. Allerdings weiß ich nicht, welchen Wert der Zelltyp für Richtext hat und auch nicht wie ich den von Delphi aus setzen kann.


MFG
Lorenz

marabu 15. Aug 2007 17:30

Re: Richtext mit Formatierung in Excel einfügen
 
Hallo Lorenz,

Zitat:

Zitat von Reinhardtinho
Wenn ich vom RichEdit manuell in die Zwischenablage kopiere, dann verliere ich auch die Formatierung, wenn ich es in Excel einfüge.

beim Einfügen, aber nicht beim Kopieren - um genau zu sein!?

Zitat:

Zitat von Reinhardtinho
Wenn ich aber aus der Zwischenablage in Word einfüge, dies dann wieder in die Zwischenablage kopiere und das dann in Excel einfüge, wird die Formatierung beibehalten ... komischerweise.

Die Formatierung, aber nicht die Bilder - oder? Excel 2003 kennt etwa 32 ClipBoard-Formate. JvRichEdit speichert die Daten höchst wahrscheinlich im Format CF_RTF. Wenn du die Daten mit Word erneut in die Zwischenablage gibst, dann kannst du über den Menübefehl Bearbeiten|Spezielles Einfügen... (PasteSpecial) feststellen, welche Formate Word bereit gestellt hat. Genauso kannst du in Excel mit dem gleichen Befehl experimentieren.

Zitat:

Zitat von Reinhardtinho
Also muss ich entweder noch Word dazwischenschalten, was ich allerdings als sehr unschön empfinde oder - ich habe grade noch einen Tipp erhalten - den Zelltypen in Excel ändern. Allerdings weiß ich nicht, welchen Wert der Zelltyp für Richtext hat und auch nicht wie ich den von Delphi aus setzen kann.

Nutze die Makroaufzeichnung von Excel um Namen von Objekten, Methoden und Eigenschaften zu ermitteln.

Generell solltest du deinen Ansatz mit der Zwischenablage nochmal überdenken, da dieses Hilfsmittel eigentlich dem Benutzer vorbehalten ist. Will heißen, Lesen darf jedes Programm, aber Schreiben sollte nur auf Veranlassung des Benutzers (Menubefehl, Tastenbefehl) geschehen. Besser du legst ein privates ClipBoard an, auf das nur dein Programm Zugriff hat.

Freundliche Grüße

Reinhardtinho 16. Aug 2007 07:57

Re: Richtext mit Formatierung in Excel einfügen
 
Guten Morgen Marabu,


Zitat:

Zitat von marabu

Zitat:

Zitat von Reinhardtinho
Wenn ich vom RichEdit manuell in die Zwischenablage kopiere, dann verliere ich auch die Formatierung, wenn ich es in Excel einfüge.

beim Einfügen, aber nicht beim Kopieren - um genau zu sein!?

Richtig, nach dem Kopieren sind die Formatierungen noch erhalten.

Zitat:

Zitat von marabu

Zitat:

Zitat von Reinhardtinho
Wenn ich aber aus der Zwischenablage in Word einfüge, dies dann wieder in die Zwischenablage kopiere und das dann in Excel einfüge, wird die Formatierung beibehalten ... komischerweise.

Die Formatierung, aber nicht die Bilder - oder? Excel 2003 kennt etwa 32 ClipBoard-Formate. JvRichEdit speichert die Daten höchst wahrscheinlich im Format CF_RTF. Wenn du die Daten mit Word erneut in die Zwischenablage gibst, dann kannst du über den Menübefehl Bearbeiten|Spezielles Einfügen... (PasteSpecial) feststellen, welche Formate Word bereit gestellt hat. Genauso kannst du in Excel mit dem gleichen Befehl experimentieren.

Hmm ... also Bilder wurden bei mir auch ganz normal in Excel eingefügt, nach dem ich es aus Word kopiert habe.
Spezielles Einfügen sehe ich bei mir nicht, habe aber auch das Office-Paket 2003 SP2. Habe die Optionenen "Einfügen" und "Inhalte einfügen".

Zitat:

Zitat von marabu
Zitat:

Zitat von Reinhardtinho
Also muss ich entweder noch Word dazwischenschalten, was ich allerdings als sehr unschön empfinde oder - ich habe grade noch einen Tipp erhalten - den Zelltypen in Excel ändern. Allerdings weiß ich nicht, welchen Wert der Zelltyp für Richtext hat und auch nicht wie ich den von Delphi aus setzen kann.

Nutze die Makroaufzeichnung von Excel um Namen von Objekten, Methoden und Eigenschaften zu ermitteln.

Generell solltest du deinen Ansatz mit der Zwischenablage nochmal überdenken, da dieses Hilfsmittel eigentlich dem Benutzer vorbehalten ist. Will heißen, Lesen darf jedes Programm, aber Schreiben sollte nur auf Veranlassung des Benutzers (Menubefehl, Tastenbefehl) geschehen. Besser du legst ein privates ClipBoard an, auf das nur dein Programm Zugriff hat.

Das ist richtig, schön ist das nicht. Da werde ich mir nochmals Gedanken drüber machen.

Also schon mal recht vielen Dank für deine Bemühungen.

MFG
Lorenz

marabu 16. Aug 2007 08:09

Re: Richtext mit Formatierung in Excel einfügen
 
Guten Morgen Lorenz,

ich habe leider keinen Zugang zu MS Office, "Inhalte einfügen" wird es wohl sein. Die VBA-Methode heißt PasteSpecial().

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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