AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Winword-OLE Search&Replace

Ein Thema von hoika · begonnen am 20. Jul 2016 · letzter Beitrag vom 25. Jul 2016
Antwort Antwort
bcvs

Registriert seit: 16. Jun 2011
730 Beiträge
 
Delphi 12 Athens
 
#1

AW: Winword-OLE Search&Replace

  Alt 22. Jul 2016, 07:40
Ich nehme bei Docx die Datei bereits selber auseinander, um meine zu ersetzenden Kenner zu finden.
Ist ja ne simpel Zip-Datei.
Das OLE benutze ich dann "nur" zum eigentlichen Ersetzen.
Und warum ersetzt du deine Texte dann nicht direkt in der DOCX, wenn du sie eh schon auseinander nimmst?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Winword-OLE Search&Replace

  Alt 22. Jul 2016, 13:12
Hallo,
das habe ich auch schon probiert.
Danach ist öfters die Datei defekt (sagt Word).

Ich glaube, dass liegt am Zippen nach dem Ersetzen.
Passiert aber nicht immer,
also lasse ich es lieber.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#3

AW: Winword-OLE Search&Replace

  Alt 22. Jul 2016, 14:13
Nein, ich vermute mal eher, Du machst etwas falsch. Wenn nämlich Word sein eigenes Suchen&Ersetzen nicht ohne den von Dir beschriebenen Fehler erledigen könnte, dann wäre die Kacke mächtig am dampfen. HintergrundInformation: Wenn Du per COM/OLE eine Wordfunktion benutzt, ist das in aller Regel auch die Funktion die Word selbst verwendet.

Ich gehe mittlerweile davon aus, daß Du eine veraltete Schnittstelle verwendest, um auf das Word-Dokument zuzugreifen, dafür spricht, daß es mit docx nicht zurecht kommt, dafür aber mit dem von dir vorbereiteten/entpackten Dokument.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Winword-OLE Search&Replace

  Alt 22. Jul 2016, 14:52
Hallo,
Moment!

Klar kommt die alte Schnittstelle mit dem DOCX klar,
aber ich habe noch keine Funktion gefunden, die mir den Word-Text im Printformat,
also als reinen ASCI-Text zurückgibt.
Somit weiss ich nicht, welche Kenner das aktuelle Word-Dokument besitzt.
Kann ja sein, dass es nur 3 Kenner hat.
Dann muss ich nur 3 mal mein Replace machen.
Ich hatte mal was mit Paragraphs gelesen, das aber nicht hinbekommen.
Da Docx ja reine Text(Xml-)-Dateien sind, suche ich die Kenner einfach direkt per Delphi-Code.

Weist du, wie ich den lesbaren Text einer Worddatei mit Word selber ermittle,
also ohne die Formatierungen und den ganzen Schickschnack?

Wie gesagt:
Es sind 2 Methoden:
1. Ermittle alle Kenner des Dokumentes.
2. Ersetze genau diese Kenner durch die entsprechenden Werte.

PS2:
Ich glaube, das war bei Open-Office, der ganz penibel mit seinen Dateien war.
Ausgepackt, etwas im Text (nicht dem Xml-Strukturen) geändert,
wieder zusammengepackt -> Puff, OO sagt, Datei ungültig.

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Winword-OLE Search&Replace

  Alt 22. Jul 2016, 22:15
Klar kommt die alte Schnittstelle mit dem DOCX klar,
aber ich habe noch keine Funktion gefunden, die mir den Word-Text im Printformat,
also als reinen ASCI-Text zurückgibt.
Speicher es als Text, aber ich vermute, das willst Du nicht.

Eine andere Möglichkeit wäre das kopieren des ganzen Text (Details weiß ich jetzt gerade nicht "wholeStory" könnte Dein Stichwort sein) und dann liest Du das Clipboard aus.

Somit weiss ich nicht, welche Kenner das aktuelle Word-Dokument besitzt.
Kann ja sein, dass es nur 3 Kenner hat.
Dann muss ich nur 3 mal mein Replace machen.
Was verstehst Du unter "Kenner"?


Ich hatte mal was mit Paragraphs gelesen, das aber nicht hinbekommen.
Ein entspricht ziemlich genau einem Delphi-String, platt gesagt das was zwischen zwei CRLF steht. Je nach Seitenbreite und Länge erhält man dann einen mehrzeiligen Abschnitt.

Du bist Dir aber darüber im klaren, daß ein Word-Dokument nicht einfach nur aus Text besteht, sondern z.B in Sections unterteilt ist?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#6

AW: Winword-OLE Search&Replace

  Alt 25. Jul 2016, 06:46
OK, alles gut dann.
Meinst Du mit "Kennern" Textmarken? Die werden im englischen Bookmarks genannt und sind als solche im Selection Objekt zu finden (https://msdn.microsoft.com/en-us/lib.../ff193356.aspx).

Mein Ausflug in die Word-COM-Programmierung handelte vom Suchen&Ersetzen solcher Textmarken. Wie gesagt wegen mangelhafter Performance (es ging um 300-400 Textmarken pro Dokument) wurde das zu Gunsten von Crystal Reports samt Word Export aufgegeben. Aber eventuell kann ich noch ein bis zwei Tipps zusammenkratzen. Quellcode liegt mir leider nicht mehr vor.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Winword-OLE Search&Replace

  Alt 25. Jul 2016, 07:56
Hallo,
nein, ist schon gut. Klappt ja ganz gut.
Vielleicht kaufe ich ja wirklich mal ne Komponente (Scallabium?),
oder schau mir mal TWordApplication an.

Bei 300-400 Kennern würde ich auch krachen gehn

Mit Kenner meine ich eine eigene Kreation, wie z.B. #Name#,
der soll dann durch den richtigen Namen ersetzt werden.


Einfach so auf was anderes Umsteigen geht nicht,
hängen ja ne Menge Kunden dran, die sich eigene Reports mit Word oder Open-Office gebastelt haben.


< Du bist Dir aber darüber im klaren, daß ein Word-Dokument nicht einfach nur aus Text besteht,
sondern z.B in Sections unterteilt ist? >
Ja, ist bekannt, benutzt aber von unseren Kunden keiner.
Wir haben vorgefertigte Reports (mit einer Sektion), die werden abgeändert.
Ich habe aber mal testweise eine Word-Datei mit 2 Sektions erzeugt,
und schon wurde bei der 2. Sektion nichts ersetzt ...
Muss ich noch ändern.
Heiko

Geändert von hoika (25. Jul 2016 um 07:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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