Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Word-Dok ohne Word verändern... (https://www.delphipraxis.net/211181-word-dok-ohne-word-veraendern.html)

erich.wanker 9. Aug 2022 10:44

Word-Dok ohne Word verändern...
 
Hallo,
ich würde gerne Word-Dokumente "ausfüllen" OHNE Word zu verwenden.

Wenn im Word Dokument der Text <<Name>> oder <<Ort>> oder <<Gewicht>> steht - sollte es durch einen Datenbankeintrag ersetzt werden

Wenn Ein Dokument als "Word als XML" vorhanden ist - ist es kein Problem (in Memo einlesen -> Stringreplace machen -> wieder abspeichern)

Aber dann habe ich ein XML mit dem keiner so recht was anfangen will .. besser wäre natürlich ein Dokumententyp

Ps. Opendokument: im Quelltext eines Dokuments kann ich nix ändern .. das schaut so Binär aus?


Hat jemand eine Idee wie ich das besser machen könnte?

Ligrü und vielen Dank
Erich

mjustin 9. Aug 2022 10:54

AW: Word-Dok ohne Word verändern...
 
Sind es denn DOCX Dateien?
DOCX sind gezippte Dateien, die man mit Delphi-Bordmitteln extrahieren, ändern und wieder speichern kann.

erich.wanker 9. Aug 2022 14:23

AW: Word-Dok ohne Word verändern...
 
Hallo mjustin

ich habe gerade ein text.docx in test.zip umbenannt .. und siehe da :shock::shock: - es hat erfolgreich ungezipped und mir einen ordner erstellt mit div subfoldern..

Ich hab test/word/document.xml eingesehen - und da steht der Text vom Worddokument drinnen

Wenn ich nun den Text im document.xld ändere und die ganzen ordner dann wieder zippe und als "docx" umbenenne - ist das dann eine saubere und stabile Lösung?

Vielen Dank für Hinweise
Erich

himitsu 9. Aug 2022 14:29

AW: Word-Dok ohne Word verändern...
 
Im Prinzip ist das ja auch eine ZIP ... einfach nur mit der "falschen" Endung.


mit 7-Zip läst sich das auch ganz einfach machen
* gewünschte Datei extrahieren
* diese Datei bearbeiten
* und dann die Datei in der "ZIP" updaten/replacen

Bei Google suchen7 zip update files in archive

Delphi.Narium 9. Aug 2022 15:00

AW: Word-Dok ohne Word verändern...
 
Eine ZIP-Komponente Deiner Wahl ins Programm aufnehmen.

Aus der ZIP-Datei (*.docx) die gewünschte XML in 'nen Stream extrahieren.

Diesen Stream in einen TStrings(-Nachfahren) per LoadFromStream laden.

Änderungen vornehmen.

TStrings(-Nachfahren) per SaveToStream in 'nen Stream kopieren.

Diesen Stream per ZIP-Komponente in die ZIP-Datei packen.

Mach' ich in der Art mit EPubs. Sind ja auch nur ZIP-Dateien.

freimatz 9. Aug 2022 17:53

AW: Word-Dok ohne Word verändern...
 
Zitat:

Zitat von erich.wanker (Beitrag 1509922)
ist das dann eine saubere und stabile Lösung?

Definiere stabil. Ich meine Nein. Microsoft kann jederzeit das Format ändern.

TurboMagic 9. Aug 2022 21:48

AW: Word-Dok ohne Word verändern...
 
Stabil? Naja, MS kann jederzeit das Format ändern, dann wäre aber die ISO Standardisierung wohl futsch, die sie scheinbar vor Jahren auf etwas "unkoscherem Weg" erhalten hatten und mancher Anwender darf's dann evtl. nicht mehr nutzen, da es kein offenes bzw. standardisiertes Format ist.
=> die werden das nicht ganz so einfach abändern wollen...

Zu ZIP: in neueren Delphis ist ja in der RTL schon eine ZIP-Bibliothek mit drin, die zumindest für die einfacheren Fälle reicht.
Ver/Entschlüsselung kann die m.W. z. B. nicht, aber normale .DOCX Dateien sind ja auch nicht verschlüsselt...

Grüße

TurboMagic

himitsu 9. Aug 2022 23:38

AW: Word-Dok ohne Word verändern...
 
Zitat:

... MS kann jederzeit das Format ändern, ...
=> die werden das nicht ganz so einfach abändern wollen...
Doch, tun sie jedes Jahr mehrmals (nur Dieses war wohl Corona :stupid:), zumindestens Teilweise, auch wenn wohl grundlegende Dinge sich nicht so stark ändern werden.


Nja, im Gegensatz zum alten Format ist es hier ja gut dokumentiert.
https://docs.microsoft.com/en-us/ope...6-5954d0abbccd

Aber ja, es sollte klar sein, dass man besser auch das Protokoll-Format ausliest und mindestens prüft, ob es in einem für sich gültigen Bereich liegt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz